如何在注销时从 react native drawer-navigator 中删除屏幕(卸载组件)?如何重新加载组件数据?

How to remove screens (unmount component) from react native drawer-navigator on log out?How to reload Components Data?

我在我的应用程序中使用 react navigation v3,我在抽屉导航器中使用堆栈导航器,在单击注销时我导航到登录屏幕并清除用户存储,但是每当我再次登录时,主要组件不会调用componentWillMount 或 componentDidMount 方法,并显示 Previously loaded data on it.这是我的代码 >

const screens = {
  login: { screen: Login },
  dashboard: { screen: Dashboard },
  patientList:{screen:StackNav},
  headerComponent:HeaderComponent
 }

  const MyDrawerNavigator = createDrawerNavigator(
     screens,
      {
       initialRouteName: 'login',
      contentComponent: Sidebar
       }
     );

    App  = createAppContainer(MyDrawerNavigator);
    export default App;

堆栈导航 ==

export default createStackNavigator({
     PatientList,
     PatientDetails
 });

注销功能==

  localStorageService.removeAllKeys().then((res) => {
    this.props.navigation.navigate(route, { isLogin: 'N' })
  });

将其放入抽屉导航器的导航选项中

unmountInactiveRoutes: true

在 React 导航中 5.x

使用unmountOnBlur

<Drawer.Screen
    name={...}
    component={...}
    unmountOnBlur={true}
    options={{unmountOnBlur: true}}
/>

作为补充:我在createDrawerNavigator() configs里面引入了配置,如上:

const AppNavigator = createDrawerNavigator(
{
  Home:{
    screen: Home
  },
  Login:{
    screen: Login,
    navigationOptions: {
        drawerLabel: () => null
    }
  }
},
{
  unmountInactiveRoutes: true
});

现在所有页面都在没有任何 "cache"。