目前这些是我的react原生应用程序中的屏幕。
Root Nav - (SwitchNavigator)
Stack A - (BottomTabNavigator)
Page A
Page B
Stack B - (StackNavigator)
Page C
Page D
我正在尝试从页面A/B
导航到页面C/D
但当我尝试使用this.props.navigation.navigate()
导航时,它将正确导航,但历史记录功能(如向右滑动或调用goBack()
以转到上一页(在不同堆栈中((不起作用。当导航到页面D
并向右滑动时,它会转到页面C
,再次向右滑动不会起任何作用。
不同的堆栈是独立的,因此,如果您需要保留这些屏幕之间的导航历史记录,则必须将它们设置在同一堆栈中。堆栈可以像屏幕一样在流中设置,例如,在抽屉导航器中设置堆栈导航器:
/**
* User drawer stack
*/
const DrawerStack = DrawerNavigator({
Home: {screen: HomeStack}, //HomeStack is a StackNavigator
}, {
contentComponent: DrawerContainer,
initialRouteName: 'Home',
});
通过这个重新思考你想要你的历史是什么样子。如果我正确理解你的用例,你希望A/B与C/D共享历史,我想说你需要你的堆栈像:
Root Nav - (SwitchNavigator)
Stack B - (StackNavigator)
Stack A - (BottomTabNavigator)
Page A
Page B
Page C
Page D
如果你因为某种原因无法做到这一点,那么你需要手动捕捉回压和滑动,才能自己完成这一行为。