我正试着回去看两个屏幕。目标是从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>
);
}发布于 2018-09-11 01:11:13
正确的方法是使用StackNavigation:
const AppNavigator = createStackNavigator({
Main: {screen: MainScreen},
Cover: {screen: CoverScreen},
EditCover: {screen: EditCoverScreen},
EditPage: {screen: EditPageScreen},
}, {
initialRouteName: 'Main'
});
class App extends React.Component {
render() {
return <AppNavigator/>;
}
}根据您的问题,这是屏幕导航的顺序,所以当您在goBack(null)中时
EditPage (goBack) -> EditCover (goBack) -> Cover (goBack) -> Main
您必须在组件中像这样调用goBack(null):
this.props.navigation.goBack(null);这是正确的方法。
发布于 2019-08-17 19:13:12
通常,我们可以使用以下两个命令
this.props.navigation.goBack()this.props.navigation.dispatch(NavigationActions.back())在另一种情况下,我们必须使用两个命令:
在这种情况下,一个底部导航标签将有一些屏幕。因此,在任何选项卡的导航和另一个Tab的导航之间,可以使用第二个命令。
https://stackoverflow.com/questions/45489343
复制相似问题