Защищенные маршруты в приложении response-redux, маршрутизатор React не работает должным образом - PullRequest
1 голос
/ 27 апреля 2019

У меня есть паспортная стратегия с экспресс-сервером на бэкэнде.Я настроил все паспортные стратегии и аутентификацию.Теперь мне нужно защитить некоторые из моих маршрутов.Я использую избыточность для хранения статуса, вошел ли пользователь в систему или нет.

Я попытался создать личный маршрут в соответствии с этим учебником .Но он попал в бесконечный цикл (бесконечный рендеринг компонента).

Следующий код успешно подключается к хранилищу резервных копий, отправляет действие и сервер также работает нормально.

Но, пожалуйста, подскажите, почемуя в бесконечной петле.

Моя защищенная функция выглядит следующим образом:

const login = {
  type: "Login"
};
const logout = {
  type: "Logout"
};
const AUTH =
  process.env.NODE_ENV === "production"
    ? "https://birdiez.herokuapp.com/auth/check"
    : "http://localhost:3090/auth/check";

const PrivateRoute = ({ component: Component, ...rest }) => (
  <Route
    {...rest}
    render={props => {
      console.log("calling api");
      fetch(AUTH)
        .then(response => {
          return response.json();
        })
        .then(data => {
          console.log("Promise resolved:", data);
          data.msg === "OK" ? store.dispatch(login) : store.dispatch(login);
        });
      const { status } = store.getState();
      return status === true ? (
        <Component {...props} />
      ) : (
        <Redirect
          to={{
            pathname: "/",
            state: { from: props.location }
          }}
        />
      );
    }}
  />
);
export default PrivateRoute;

Мой App.js выглядит следующим образом:

class App extends Component {
  render() {
    return (
      <Router>
        <Switch>
          <Route exact path="/" component={Home} />
          <PrivateRoute path="/dash" component={Dash} />
          <Route exact path="*" component={Home} />
        </Switch>
      </Router>
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...