所以当我尝试传入goBack函数作为参考时它由于某种原因不起作用,我需要将其封装为匿名函数才能使其工作。有这样的原因吗?
我想要这个工作! (下)
<Button onPress={this.props.navigation.goBack} />
但只有这个有效(下图)
<Button onPress={() => this.props.navigation.goBack()} />
this
是否失去参考?谢谢!
编辑:我注意到该文档还使用匿名函数来调用goBack
。好奇为什么会这样。
答案 0 :(得分:1)
<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
与您的任何预定义密钥都不匹配,因此路由无效。
答案 1 :(得分:0)
是的,这是你最有可能的问题。
尝试:<Button onPress={this.props.navigation.goBack.bind(this)} />
请参阅整体方法/清洁代码的文档中的这一点: