使用反应导航通过嵌套路由器注销
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 。
我一直在努力使用 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 。