传递反应导航goBack作为参考

时间:2017-08-09 18:58:23

标签: javascript react-native react-navigation

所以当我尝试传入goBack函数作为参考时它由于某种原因不起作用,我需要将其封装为匿名函数才能使其工作。有这样的原因吗?

我想要这个工作! (下)

<Button onPress={this.props.navigation.goBack} />

但只有这个有效(下图)

<Button onPress={() => this.props.navigation.goBack()} />

this是否失去参考?谢谢!

编辑:我注意到该文档还使用匿名函数来调用goBack。好奇为什么会这样。

2 个答案:

答案 0 :(得分:1)

<Button onPress={this.props.navigation.goBack} />不起作用的原因是goBack期望nullundefined作为第一个参数,具有返回一个屏幕的默认行为。

当您使用此onPress={this.props.navigation.goBack}之类的处理程序时,处理程序将使用处理程序传回的事件(即goBack)调用this.props.navigation.goBack(event)

event不为空,因此goBack函数会尝试将其作为屏幕的关键字传递给goBackhttps://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)} />

请参阅整体方法/清洁代码的文档中的这一点:

https://facebook.github.io/react/docs/handling-events.html