使用反应导航通过嵌套路由器注销

Logging out through nested routers with 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 这样的包,但我觉得这不是真的 'clean'...

提前致谢

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

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