无法在react native和keep-back函数中的两个不同堆栈之间正确导航



目前这些是我的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

如果你因为某种原因无法做到这一点,那么你需要手动捕捉回压和滑动,才能自己完成这一行为。

最新更新