传递反应导航goBack作为参考
所以,当我尝试传递goBack函数作为参考它不起作用,我需要封装它作为一个匿名函数来工作。有这个原因吗?传递反应导航goBack作为参考
我想这个工作! (如下图)
<Button onPress={this.props.navigation.goBack} />
但是,只有这工作(下)
<Button onPress={() => this.props.navigation.goBack()} />
是this
失去其参考?谢谢!
编辑:我注意到,该文件也使用匿名函数来调用goBack
。好奇这是为什么。
之所以<Button onPress={this.props.navigation.goBack} />
不工作是goBack
期望null
或undefined
作为第一个参数具有只返回一个屏幕的默认行为。
当您使用像这样的处理程序onPress={this.props.navigation.goBack}
时,处理程序将调用goBack
处理程序传回的事件,即this.props.navigation.goBack(event)
。
event
不为空,因此goBack
函数会尝试将其作为屏幕的关键字传递给goBack
。 https://reactnavigation.org/docs/navigators/navigation-prop#goBack-Close-the-active-screen-and-move-back。然后,event
与您的任何预定义密钥不匹配,因此路由不起作用。
是的,那是你最可能的问题。
尝试:<Button onPress={this.props.navigation.goBack.bind(this)} />
提到这一点在文档的总体方法/清洁代码:
我认为'goBack'本身就是一个箭头函数,因此不能被反弹到一个新的'this'。 – Kraylog
是的,我也这么认为^。你可以创建一个引用一个匿名函数的变量,并且可以将该函数作为'this.foo'来传递,并且它被正确调用。 –
胖箭头保留'this'上下文。 – aromero