@m_frost

Как правильно реализовать PrivateRoute ???

Крч такой вопрос есть PrivateRoute которий чекает в redux store есть ли залогинений пользователь в системе, я фетчу юзера по токенау с локал сторедж и по дефолту он null а после фетча если он успешен пользователь появляется в системе. Проблема в том, что пока проходит фетч юзера PrivateRoute уже редирект пользователя как незалогиненого. Ко мне это решить типа как то асинхронно проверять пользователь сфетчился уже и если нет то редиректиты, но моих знаний недостаточно чтобы это решить возможно кто-то из вас уже сталкивался с чем-то похожим (куки не предлагать).
  • Вопрос задан
  • 371 просмотр
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
Например:
const PrivateRoute = ({ component: Component, render, isSignedIn, ...rest }) => (
  <Route
    {...rest}
    render={props => {
      if (!isSignedIn) return (
        <Redirect
          to={{
            pathname: '/login',
            state: { referrer: props.history.location.pathname },
          }}
        />
      );

      if (render) return render({ ...props });

      return <Component {...props} />;
    }}
  />
);

const mapStateToProps = (state) => ({
  isSignedIn: isSignedInSelector(state),
});

export default connect(mapStateToProps)(PrivateRoute);


referrer тут передается для возможности возврата на целевую страницу после логина.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы