реакции-маршрутизатор-дом PrivateRoute с избыточной бесконечной загрузкой - PullRequest
0 голосов
/ 21 февраля 2020

После перезагрузки PrivateRoute перенаправляет на / login до начала авторизации, поскольку исходное состояние redux равно false для них обоих.

Это журналы от маршрутизатора:

PrivateRoute. js: 16 Загрузка : false isAuthenticated : false
PrivateRoute. js: 16 Загрузка : true isAuthenticated : false
PrivateRoute. js: 16 Загрузка : false isAuthenticated : true

Он работает правильно , мне просто нужен способ отличить guish исходное состояние от не прошедшего проверку пользователя.

Моя попытка

  1. Моей первой мыслью было изменение начального состояния для isLoading на true :
    Странное поведение. Страница не загружается вообще. Даже весь компонент приложения не может быть смонтирован, поэтому я не знаю, что происходит.
  2. Изменение исходного состояния для 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);

1 Ответ

0 голосов
/ 22 февраля 2020

Я потратил около 5 часов, чтобы понять, что я забыл импортировать что-то в Spinner ... Спасибо всем за усилия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...