#reactjs #redirect #redux
Вопрос:
Я создаю простое приложение для аутентификации с использованием MERN Redux, в котором после успешного входа пользователя перенаправляется на домашнюю страницу, на которой я отправляю действие, возвращающее файл cookie ( успешный вход равен файлу cookie = true, и наоборот).
Это код на домашней странице
const dispatch = useDispatch();
const cookie_info = useSelector( state => state.is_user_logged_in );
const { cookie, loading } = cookie_info;
React.useEffect(()=>{
dispatch(get_cookie_action());
},[]);
return (
<>
{
loading
?
<h1>LOADING</h1>
:
(
cookie
?
(
<div>
<Navbar/>
</div>
)
:
<Redirect to="/login"/>
)
}
</>
);
Проблема в том, что после входа пользователя в систему все работает, но после того, как я обновляю домашнюю страницу, я снова перенаправляюсь на страницу входа, это означает, что реакция не ждет изменения состояния файла cookie с ложного на истинное и немедленно «срабатывает»
<Redirect to="/login"/>
часть кода. Мое начальное состояние cookie в редукторах является ложным.
Комментарии:
1. Похоже, вам нужно сохранить хранилище redux, чтобы при обновлении оно не возвращалось в исходное состояние. Узнайте больше о redux persist .
2. Почему вы храните файлы cookie в магазине redux ? Лучше хранить его как файл cookie браузера, в котором он будет сохраняться, даже если ваш браузер закрыт (до истечения срока действия файла cookie) ?
3. @K. vindi Я храню файл cookie внутри файла cookie браузера, и он является HttpOnly, поэтому я отправляю действие в серверную часть NodeJS, в котором я возвращаю true/false, действителен ли файл cookie