4

我在我的应用程序中使用反应导航 v3,我在抽屉导航器中使用堆栈导航器,在单击注销时,我导航到登录屏幕并清除用户的存储,但是每当我再次登录时,主组件不会调用 componentWillMount 或 componentDidMount 方法,并在其上显示先前加载的数据。这是我的代码>

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' })
  });
4

3 回答 3

13

在 React 导航 5.x 中

采用unmountOnBlur

<Drawer.Screen
    name={...}
    component={...}
    unmountOnBlur={true}
    options={{unmountOnBlur: true}}
/>
于 2020-02-23T18:02:16.477 回答
6

把它放在抽屉导航器的navigationOptions中

unmountInactiveRoutes: true
于 2019-03-24T16:40:05.883 回答
0

作为Danyal 的 awnser补充:我已经在 createDrawerNavigator() 配置中引入了配置,如下所示:

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

现在所有页面都可以在没有任何“缓存”的情况下工作。

于 2020-05-17T20:30:03.170 回答