栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用户注销时如何从其他屏幕重置TabNavigator

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用户注销时如何从其他屏幕重置TabNavigator

这在大多数情况下应该有效:

componentWillReceiveProps(nextProps) {    if ( nextProps.token == undefined || _.isNil(nextProps.token) ) {        let action = NavigationActions.reset({ index: 0, key: null, actions: [     NavigationActions.navigate({routeName: 'Auth'}) ]        });        nextProps.navigation.dispatch(action);    }    ...}

或尝试通过自定义操作增强导航器:

const changeAppNavigator = Navigator => {   const router = Navigator.router;   const defaultGetStateForAction = router.getStateForAction;   router.getStateForAction = (action, state) => {       if (state && action.type === "RESET_TO_AUTH") {          let payLoad = {   index: 0,   key: null,   actions: [NavigationActions.navigate({routeName: "AuthStackNavigator"})]          };          return defaultGetStateForAction(NavigationActions.reset(payLoad), state);          // or this might work for you, not sure:          // return defaultGetStateForAction(NavigationActions.init(), state)       }       return defaultGetStateForAction(action, state);  };  return Navigator;};const screens = { ... }RootTabNavigator = changeAppNavigator(TabNavigator(screens, {  initialRouteName: ...,  ...}));

然后在你

Menuo Screen
做:

componentWillReceiveProps(nextProps) {    if ( nextProps.token == undefined || _.isNil(nextProps.token) ) {        nextProps.navigation.dispatch({type: "RESET_TO_AUTH"});    ...


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/649719.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号