Как удалить экраны (размонтировать компонент) из собственного встроенного ящика-навигатора при выходе из системы? Как перезагрузить данные компонентов?
Я использую реагирующую навигацию 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
});
И теперь все страницы работают без "кеша".