【发布时间】:2021-05-26 01:14:56
【问题描述】:
假设我有 2 个 StackNavigator 并排嵌套在 BottomTabNavigator 中,如下所示:
const StackA = () => (
<StackANavigator.Navigator>
<StackANavigator.Screen
component={ScreenA1}
name={'screenA1'}
/>
<StackANavigator.Screen
component={ScreenA2}
name={'screenA2'}
/>
</StackANavigator.Navigator>
);
const StackB = () => (
<StackBNavigator.Navigator>
<StackBNavigator.Screen
component={ScreenB1}
name={'screenB1'}
/>
<StackBNavigator.Screen
component={ScreenB2}
name={'screenB2'}
/>
</StackBNavigator.Navigator>
);
const App = () => (
<BottomTabNavigator.Navigator>
<BottomTabNavigator.Screen
component={StackA}
name={'stackA'}
/>
<BottomTabNavigator.Screen
component={StackB}
name={'stackB'}
/>
</BottomTabNavigator.Navigator>
);
假设应用在“screenA1”上启动。我可以通过navigate('stackB') 和navigate('stackA') 在堆栈之间导航,例如,我可以使用navigate('stackB', { screen: 'screenB2' }) 从“screenA1”导航到“screenB2”。但是,这样做会弄乱 B 堆栈。如果我从那里调用goBack 去'screenA1',然后navigate('stackB'),我会被带到'screenB2',而不是那个堆栈的初始路径,即'screenB1'。
是否可以在不复制 A 堆栈中的“screenB2”的情况下避免这种行为?
编辑:用于说明 A1 -> A2 -> B2 -> A2 -> A1。现在如果我尝试去 B1,我会去 B2
【问题讨论】:
-
你尝试定义 initialRouteName 了吗?
-
我没有,但我刚才试了一下,行为没有变化
标签: react-native react-navigation react-navigation-v5