使用react-navigation通过嵌套路由器注销

时间:2017-05-23 16:45:13

标签: reactjs react-native react-navigation

我一直在努力使用react-native和导航器react-navigation

在我的应用内置版中实现简单注销

我的导航器看起来像这样

AuthNavigator (StackNavigator)
----DrawerNavigator (DrawerNavigator)
    ----TabsNavigator (TabNavigator)
        ----Tab1Navigator (StackNavigator)
        ----Tab2Navigator (StackNavigator)
        ----Tab3Navigator (StackNavigator)
        ----Tab4Navigator (StackNavigator)

(这是否足够清楚?)

我的退出按钮位于Tab4Navigator的屏幕中,我确实需要返回AuthNavigator而我无法弄清楚...

我一直在考虑使用像react-native-restart这样的软件包,但我觉得这不是真的'干净'......

提前致谢

1 个答案:

答案 0 :(得分:1)

我有一个类似的问题,唯一对我有用的解决方法是手动重置减速器的导航。

const nav = (state, action) => {
  switch (action.type) {
    case 'LOGOUT': {
      return {
          index: 0,
          routes: [{key: 'Init', routeName: 'AuthNavigator'}]
        };
    }
    default:
      return AppNavigator.router.getStateForAction(action, state) || state;
  }
};

LOGOUT是您要注销时从Tab4Navigator触发的自定义操作,AuthNavigator是您要在用户注销时显示的屏幕路径。这假设您使用Redux来管理导航状态,如此处所述https://reactnavigation.org/docs/guides/redux