Аутентифицированные маршруты React перенаправляют на / - PullRequest
0 голосов
/ 09 апреля 2020

У меня проблема с реакцией маршрутизации, которую я не могу понять. Я аутентифицировал маршруты ко всему, кроме моей страницы входа. Аутентификация работает правильно, и я могу перемещаться по странице, нажимая кнопки и ссылки, но когда я набираю маршрут непосредственно к URL, я перенаправляюсь на localhost: 3000 /. Я знаю, почему это происходит, я просто не могу придумать, как это исправить. Ниже приведен весь связанный код. Основная проблема - ловушка useEffect в компоненте входа, перенаправляющая на /.

Когда я набираю в URL что-то вроде localhost: 3000 / user, я отправляюсь на localhost: 3000 /

Что может Я делаю вместо этого?

PrivateRoute. js

const PrivateRoute = ({ component: Component, ...rest }) => {
  const authContext = useContext(AuthContext);
  const { isAuthenticated } = authContext;

  return (
    <Route
      {...rest}
      render={props =>
        !isAuthenticated ? <Redirect to='/login' /> : <Component {...props} />
      }
    />
  );
};

Логин. js

const Login = props => {
    useEffect(() => {
    if (isAuthenticated) {
      props.history.push('/');
    }
    }, [error, onLoad, isAuthenticated, props.history]);

    useEffect(() => {
      onLoad();
    }, [error, onLoad, isAuthenticated, props.history]);
}
...