Как удалить экраны (размонтировать компонент) из собственного встроенного ящика-навигатора при выходе из системы? Как перезагрузить данные компонентов?

Я использую реагирующую навигацию 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;

StackNav ==

export default createStackNavigator({
     PatientList,
     PatientDetails
 });

Функция выхода из системы ==

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

0 ответов

В React Navigation 5.x

использовать unmountOnBlur

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

Положить это в навигациюОпции ящика навигатора

unmountInactiveRoutes: true

В качестве дополнения к awnser Даниила: я представил конфигурацию внутри конфигураций createDrawerNavigator(), как указано выше:

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

И теперь все страницы работают без "кеша".

Другие вопросы по тегам