После перезагрузки PrivateRoute перенаправляет на / login до начала авторизации, поскольку исходное состояние redux равно false для них обоих.
Это журналы от маршрутизатора:
PrivateRoute. js: 16 Загрузка : false isAuthenticated : false
PrivateRoute. js: 16 Загрузка : true isAuthenticated : false
PrivateRoute. js: 16 Загрузка : false isAuthenticated : true
Он работает правильно , мне просто нужен способ отличить guish исходное состояние от не прошедшего проверку пользователя.
Моя попытка
- Моей первой мыслью было изменение начального состояния для isLoading на true :
Странное поведение. Страница не загружается вообще. Даже весь компонент приложения не может быть смонтирован, поэтому я не знаю, что происходит. - Изменение исходного состояния для isAuthenticated на ноль и изменение условий с
isLoading ?
* От 1064 * до
isAuthenticated === null ?
(Маршрутизатор ниже)
Все выглядит нормально, пока не требуется PrivateRoute. Когда отладчик находится в операторе , если , все снова зависает.
Это мой компонент PrivateRoute, как я обнаружил Здесь
import React from "react";
import { Route, Redirect } from "react-router-dom";
import { connect } from "react-redux";
import Spinner from "../../components/Spinner";
const PrivateRoute = ({
component: Component,
isLoading,
isAuthenticated,
...rest
}) => (
<Route
{...rest}
render={props =>
isLoading ? (
<Spinner />
) : isAuthenticated ? (
<Component {...props} />
) : (
<Redirect
to={{ pathname: "/login", state: { from: props.location } }}
/>
)
}
/>
);
const mapStateToProps = state => ({
isLoading: state.auth.isLoading,
isAuthenticated: state.auth.isAuthenticated
});
export default connect(mapStateToProps)(PrivateRoute);