意外返回嵌套导航的反应导航

问题描述 投票:0回答:2

我在

react-native 0.66.4
react-navigation 4.4.4
中面临导航问题。 我有一个看起来像这样的标签导航设置。

  • 标签导航
      • 屏幕A(初始)
      • 屏幕 B
    • 贸易

      • 屏幕 1(初始)
      • 屏幕 2
      • 屏幕 3

屏幕 1 导致 2 或 3

我正在尝试使用单独的按钮从“主页”选项卡(屏幕 A)导航到“交易”选项卡(屏幕 2 和屏幕 3),我可以通过执行

navigation.navigate('Trade', { screen: 'Screen2', params:{...} })
navigation.navigate('Trade', { screen: 'Screen3', params:{...} })

来实现

我现在面临的问题是

  1. 当我导航到交易(屏幕 2)并使用后退按钮时,它导航到主页(屏幕 A)

  2. 导航至交易(屏幕 3),然后使用后退按钮进入 这样 Trade(Screen3) => Trade(Screen 2) => Home(ScreenA), and 像这样 Trade(Screen2) => Trade(Screen 3) => Home(ScreenA) 如果 我首先访问了屏幕 3,为此我必须单击返回 两次。

  3. 最后,如果我在点击之前访问过屏幕 2 或 3 Trade 选项卡,它显示该屏幕而不是屏幕 1(初始)。 这不是我要找的那种行为。

我如何做到这一点,无论何时我从交易(屏幕 2 或屏幕 3)返回,它都会导航到交易(屏幕 1),并且在访问这些屏幕(2 和 3)中的任何一个后单击交易选项卡导航到屏幕 1(初始)?

我怎么能na

javascript reactjs react-native navigation react-navigation
2个回答
0
投票

并在访问这些屏幕中的任何一个后单击“交易”选项卡 ( 2 和 3)导航到屏幕 1(初始)?

为了实现这一点,我认为您可以使用官方文档中指定的initialRouteName 道具(检查StackNavigatorConfig)。请尝试一下,让我知道进展如何。

https://reactnavigation.org/docs/4.x/stack-navigator

我怎样才能做到无论何时我从任一交易返回(屏幕 2 或屏幕 3),它导航到交易(屏幕 1)

你能为这些屏幕做一个测试吗?创建一个按钮并 onPress

navigation.goBack()

如果一切正常,请告诉我。我没有自己的开发环境,所以我只是根据参考来写这篇文章。


0
投票

当您使用嵌套堆栈从一个选项卡导航到另一个选项卡时,您需要传递 initial: false 参数以防止第一页被视为初始页面。

navigation.navigate('TradeStack', { screen: 'Screen2', initial: false, params: { param_1: 'foo' } })

然后当您在 Screen2 上按 goBack() - 它将向上堆栈到屏幕 1(初始)

© www.soinside.com 2019 - 2024. All rights reserved.