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

Hil*_*ory 4 javascript navigation reactjs react-native react-navigation

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. 导航到 Trade (Screen3),然后使用后退按钮,这样Trade(Screen3) => Trade(Screen 2) => Home(ScreenA),就像这样Trade(Screen2) => Trade(Screen 3) => Home (ScreenA)如果我首先访问了 Screen 3,并且要实现此目的,我必须单击返回两次。

  3. 最后,如果我在单击“交易”选项卡之前访问过屏幕 2 或 3,它会显示该屏幕而不是屏幕 1(初始)。这不是我想要的行为。

我该如何做到这一点,以便每当我从交易(屏幕 2 或屏幕 3)返回时,它都会导航到交易(屏幕 1),并且在访问这些屏幕(屏幕 2 和屏幕 3)后单击交易选项卡也会导航到屏幕1(初始)?

我怎样才能

小智 5

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

navigation.navigate('TradeStack', { screen: 'Screen2', initial: false, params: { param_1: 'foo' } })
Run Code Online (Sandbox Code Playgroud)

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