按TabBar路线后重置堆栈

时间:2017-12-19 14:02:49

标签: react-native react-navigation

我目前仍然坚持我的项目,我有很多嵌套的导航器,我无法弄清楚如何在导航之前重置其中一个。

这是我的导航器结构:(屏幕X是相同的)

  • MainNavigator
    • TabBarNavigator
      • StackNavigator A.
        • 屏幕A - >导航到屏幕X
        • 屏幕B
      • StackNavigator B.
        • 屏幕C - >导航到屏幕X
        • 屏幕D
      • StackNavigator C.
        • 屏幕E - >导航到屏幕X
        • 屏幕F
      • StackNavigator D
    • 其他组件

因此,当我从屏幕A导航到屏幕X时,我仍然可以导航到其他导航器(B,C,D),因为tabBar仍然存在并且它很好。 但是,如果我在导航器A中打开屏幕X,然后导航到导航器B的屏幕,当我回到导航器时,AI想要登陆屏幕A而不是屏幕X,就像现在一样(屏幕X仍然是在导航器A的堆栈之上)。

要恢复,我的导航实际上:     - 导航器A - >屏幕A - >屏幕X - >导航器B - >屏幕B - >返回导航器A但登陆屏幕X

我希望它能做到:     - 导航器A - >屏幕A - >屏幕X - >导航器B - >屏幕B - >返回导航器A并登陆屏幕A

我尝试在我的屏幕X导航选项中设置它,但它只适用于导航器A:

tabBarOnPress: () => {
    navigation.goBack(navigation.state.key)
  }, 

任何帮助都会受到赞赏,因为我已经坚持了一段时间了。

反应:16.0.0

React Native:https://github.com/expo/react-native/archive/sdk-23.0.0.tar.gz

反应导航:^ 1.0.0-beta.19

目前正在使用iOS模拟器

2 个答案:

答案 0 :(得分:0)

使用redux集成,您可以使用reset的{​​{1}}方法:

https://reactnavigation.org/docs/navigators/navigation-actions

NavigationActions方法示例中,您将找到:

reset

答案 1 :(得分:0)

在反应导航中,tab的嵌套有点复杂,我也遇到了类似于

的东西
NavigationActions.reset({
    index: 0,
    key: null,
    actions: [
        NavigationActions.navigate({routeName: 'routeNameToNavigate'})
    ]
});

给出key值解决了我的问题,并从嵌套导航我。希望这能解决你的问题。这是问题的讨论

https://github.com/react-community/react-navigation/issues/1949