У меня проблема с реакцией маршрутизации, которую я не могу понять. Я аутентифицировал маршруты ко всему, кроме моей страницы входа. Аутентификация работает правильно, и я могу перемещаться по странице, нажимая кнопки и ссылки, но когда я набираю маршрут непосредственно к 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]);
}