Итак, у вас есть одна переменная состояния редукса isAuthenticated
.
На каждом экране вам нужно проверять это состояние, если вы не вошли в систему, то пользователь должен войти в экран входа и сбросить стек навигации.
Вы можете проверить любой метод жизненного цикла, который будет вызван при первом запуске,
например, constructor
, componentWillMount
, componentDidMount
и т. Д. *
для проверки избыточного состояния,
if(!this.props.isAuthenticated){
this.props.logoutAction();
this.props.navigation.navigate("Login");//Login or whatever your first screen is...
}
и для очистки всего стека вам нужно создать действие, которое мы вызывали в предыдущем разделе.
export const logoutAction = () => {
return dispatch => dispatch({ type: LOGOUT_SUCCESS });
};
и вам нужно изменить какую-то логику в файле, в котором вы написали код комбинированного редуктора,
const appReducer = combineReducers({
loginReducers: LoginReducers,
...
...
});
export default (rootReducer = (state, action) => {
if (action.type == LOGOUT_SUCCESS) {
state = undefined;
}
return appReducer(state, action);
});
это сбросит весь редуктор.
Теперь, если вы хотите сделать кнопку выхода из системы, тогда onPress
кнопки просто измените isAuthenticated
на false
и запустите метод навигации и выход из системы, вот и все.