我正试着回去看两个屏幕。目标是从EditPage到Cover。这是我的导航堆栈:
Main -> Cover -> EditCover -> EditPage
我读了这些文档,它说要提供您想要返回的屏幕的一个键,这是我的代码:
this.props.navigation.dispatch(NavigationActions.back({key: 'EditCover'}));我也试过(运气不好):
this.props.navigation.dispatch(NavigationActions.back('EditCover'));
this.props.navigation.dispatch(NavigationActions.back({key: 'EditCover'}));
this.props.navigation.dispatch(NavigationActions.back({routeName: 'EditCover'}));
this.props.navigation.goBack('EditCover');
this.props.navigation.goBack({key: 'EditCover'});
this.props.navigation.goBack({routeName: 'EditCover'});有趣的是,我没有犯任何错误。当代码被调用时什么都不会发生..。
如果我只想返回一个屏幕,这段代码可以正常工作:
this.props.navigation.goBack(null);万一有人在找到解决方案之前发现了这件事。这个黑客现在起作用了:
this.props.navigation.goBack(null);
this.props.navigation.goBack(null);发布于 2017-08-04 03:09:36
key属性goBack()是一个动态创建的字符串,由react-navigation在导航到新路由时创建。
例如:

它存储在this.props.navigation.state.key中。
因此,如果您想从EditPage转到Cover,您需要做的就是将EditCover的键向下传递到EditPage,然后用密钥调用goBack()。
为什么不是Cover的密钥,而是EditCover
因为react导航只提供方法goBack(key),它是从键返回的go,而不是go回到key。
还可以提供一个密钥,该密钥指定要返回的路由。默认情况下,goBack将关闭从其调用的路由。如果目标是返回任何地方,而不指定关闭的是什么,则调用
.goBack(null);
EditCover.js
render() {
const { state, navigate } = this.props.navigation;
return (
<View>
<Button title="Go to Page" onPress={ () => {
/* pass key down to *EditPage* */
navigate('EditPage', { go_back_key: state.key });
}} />
</View>
);
}EditPage.js
render() {
const { state, goBack } = this.props.navigation;
const params = state.params || {};
return (
<View>
<Button title="Back to Cover" onPress={ () => {
/* go back from *EditCover* to *Cover* */
goBack(params.go_back_key);
}} />
</View>
);
}https://stackoverflow.com/questions/45489343
复制相似问题