Я создаю реагирующее собственное приложение, в котором могут быть два типа пользовательских моделей и членов. Теперь у каждого есть разные drawer navigator
, поскольку оба имеют разные данные, и оба этих ящика находятся внутри основного stack navigator
, который является основным навигатором. для приложения. Теперь в обоих обоих drawer navigator
.
const RootStack = createStackNavigator({
Splash : { screen: Splash },
PrivacyPolicy : { screen: PrivacyPolicy},
Welcome : { screen: Welcome },
Login : { screen: Login },
HomeMember: {screen: memberdrawerNavigator},
HomeModel: {screen: modeldrawerNavigator},
OtpChangePassword : { screen: OtpChangePassword},
}, {
headerMode: 'none',
initialRouteName: 'Splash'
})
У меня есть домашняя страница, различная как для типа участника, так и для домашней страницы, и я реализовал обработчик возврата, как этот.
handleBackWithAlert = () => {
if (this.props.isFocused) {
if(this.state.loading_status){
this.setState({loading_status:false})
}
else{
Alert.alert(
'Exit App',
'Exiting the application?',
[
{
text: 'Cancel',
onPress: () => console.log('Cancel Pressed'),
style: 'cancel'
},
{
text: 'OK',
onPress: () => BackHandler.exitApp()
}
],
{
cancelable: false
}
);
}
return true;
}
}
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress',this.handleBackWithAlert);
//this.props.navigation.dispatch(DrawerActions.closeDrawer());
this.props.navigation.closeDrawer();
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.handleBackWithAlert);
}
Так как я хотел проверить обратную обработку только на определенной странице, поэтому я экспортировал свой компонент следующим образом.
export default withNavigationFocus(HomePage);
Теперь, в чем проблема, если предположить, что я использую учетную запись участника, и после этого я выхожу, а затем входу в систему с учетной записью модели, тогда этот обработчик возврата работает на каждом экране, почему? И если я закрою или закрою это приложение без выхода из системы и перезагрузки, эта проблема исчезнет.
Вот мой код, который вызывается при выходе из системы
AsyncStorage.clear()
ToastAndroid.show("Logged Out Successfully !",ToastAndroid.SHORT);
const resetAction = StackActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'Welcome' })],
});
this.props.navigation.dispatch(resetAction);
Пожалуйста, помогите мне решить эту проблему. Заранее спасибо.