как и все остальные), в котором:
1) по дефолту задается стейт loggedIn – false;
2) через useEffect проверяется статус пользователя и обновляется на true;
3) в зависимостях у useEffect указан пустой массив (пробовал задавать loggedIn - проблема не решается);
4) loggedIn передается в нижестоящий HOC-компонент ProtectedRoute (пробовал разными способами - и через пропсы, и через контекст – не влияет);
5) ProtectedRoute рендерится при переходе на адрес /user-profile и должен делать Redirect только при loggedIn – false.
Проблема: при ручном вводе /user-profile в адресную строку рендер ProtectedRoute происходит еще до того, как loggedIn меняется на true, и поэтому Redirect успевает случиться всегда.
Что я делаю не так?
Поставь какой нибудь loader до того момента как статус авторизации загружается. Что то типо: isLoggingIn ? <Loader /> ...RouterDom
isLoggingIn... Идею понял, попробую, спасибо
можно пойти дальше, и в рутовом компоненте / сторе держать информацию о глобальном статусе приложения, loading loaded, crashed.... может еще что понадобится, а не boolean флажок, и с помощью данного статуса какие-то глобальные условия в отрисовке приложения разрулить
Не полагаться на редиректы с помощью компонентов для глобальных состояний (), а по месту с помощью императивных вызовов history.push()
Забудьте. Вот тут человек лучший способ описал https://t.me/react_js/1077934
Обсуждают сегодня