Я использую реагирующую и реагирующую навигацию.Я создаю ящик с реагирующей навигацией, а затем внутри него, используя свой собственный формат.Я изо всех сил пытаюсь заставить мою кнопку выхода работать правильно.
Это прекрасно работает:
<TouchableOpacity onPress={this.props.logoutUser()}>
<Text style={{margin: 16,fontWeight: 'bold'}}>Logout</Text>
</TouchableOpacity>
Но я хочу включить предупреждение и убедиться, что пользователь хочет выйти.Это не работаетОн выходит из системы пользователя / при следующем входе в приложение я вижу, что они вышли из системы, но не запускает обновление для моего приложения, пока я не обновлю его вручную.
<TouchableOpacity onPress={()=>
Alert.alert(
'Log out',
'Do you want to logout?',
[
{text: 'Cancel', onPress: () => {return null}},
{text: 'Confirm', onPress: () => {
this.props.logoutUser
}},
],
{ cancelable: false }
)
}>
<Text style={{margin: 16,fontWeight: 'bold'}}>Logout</Text>
</TouchableOpacity>
Для справкиВот как я отображаю экран входа в систему по сравнению с изменениями главной страницы (props.restoring) в зависимости от того, вошел ли пользователь в систему или нет.По какой-то причине он обновляется только при верхнем вызове. Мне интересно, влияет ли ящик или предупреждение на способ вызова функции:
const ChatAppComponent = props => {
if (props.restoring) {
return <ActivityIndicator style={styles.activityIndicator} />
} else {
if (props.logged) {
return <DashboardNavigator />
} else {
return <AuthScreen />
}
}
}
РЕДАКТИРОВАТЬ: добавление в функцию выхода из системы
export const logoutUser = () => {
return dispatch => {
dispatch(sessionLoading());
LoginManager.logOut();
firebaseService
.auth()
.signOut()
.then(async () => {
await GoogleSignin.revokeAccess();
await GoogleSignin.signOut();
dispatch(sessionLogout());
})
.catch(error => {
dispatch(sessionError(error.message));
});
};
};