传递反应导航 goBack 作为参考

passing react navigation goBack as reference

因此,当我尝试将 goBack 函数作为引用传递时,由于某种原因它不起作用,我需要将其封装为匿名函数才能使其工作。为什么会这样?

我希望它能工作! (下)

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

但只有这个有效(下)

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

this 是否丢失了它的引用?谢谢!

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

是的,这很可能是你的问题。

尝试:<Button onPress={this.props.navigation.goBack.bind(this)} />

参考文档中的这一点以获得整体方法/更清晰的代码:

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

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

当您像这样使用处理程序时 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 与您的任何预定义键都不匹配,因此路由无效。