我在TabNavigator中有2个堆栈。结构如下
StackA
-屏幕A
-屏幕A1
-屏幕A2
StackB
-屏幕B
-屏幕B1
-屏幕B2
TabNavigator
-StackA
-StackB
现在,在屏幕A中,我想导航到屏幕B1。我只使用了navigation('Screen B1'),导航就成功了。 但是,当我单击“后退”按钮(我是我的天哪)时,我在显示屏幕B的StackB上。
我真的希望在这种情况下看到屏幕A。
答案 0 :(得分:1)
为此,您将必须创建一个自定义backButton
,让您的屏幕知道您从哪里导航。一个例子是:
this.props.navigation.navigate('ScreenB1', {lastScreen:"ScreenA1"}) //navigating from stack to other stack with param
然后,backButton
将检查lastScreen
变量,并查看其是否已定义。
<BackButton onPress={({navigation})=>{
let lastScreen=navigation.state.params.lastScreen
if (lastScreen) return navigation.navigate(lastScreen)
else navigation.pop(1)
}
}
由于我不知道您的代码看起来像我写的一般情况,但是您可以根据需要进行更改。
答案 1 :(得分:0)
当前,Stack A
和Stack B
位于不同的堆栈中。其他堆栈导航器位于tab navigator
内,因此可以移动它们,但是后退按钮(默认的堆栈导航器命令)并未移动到您想要的位置。由于stack B
的初始屏幕是screen B
,因此在堆叠screen B1
的堆叠之后,您会在其顶部看到screen B
。如果您想去想去的地方,请按“后退”按钮,然后转到所需的屏幕
// B1 Screen Back button
navigate('Screen A')
// OR If you want Screen A to be rendered again,
push('Screen A')