Ссылка на состояние Redux в маршруте ведет себя странно - PullRequest
0 голосов
/ 24 апреля 2020

Перед загрузкой страницы UnauthRoute проверяет, прошел ли пользователь Аутентификацию или статус Аутентификации уже проверен («проверен»). Последнее существует для того, чтобы пользователи, переходящие на страницу по прямой ссылке, не перенаправлялись, поскольку статус аутентификации еще не проверен.

По какой-то причине пользователь перенаправляется, даже если инструкция OR возвращает true (проверено с помощью консоли). Моя единственная теория заключается в том, что состояние Redux еще не загружено, и консоль возвращает конечный результат обещания.

Что я делаю не так?

UnauthRoute:

import React from "react";
import { Route, Redirect } from "react-router-dom";
import { connect } from "react-redux";
import PropTypes from "prop-types";

const UnauthRoute = ({
  component: Component,
  authenticated,
  checked,
  ...rest
}) => (
  <Route
    {...rest}
    render={props =>
      !checked || authenticated ? (
        <Component {...props} />
      ) : (
    <Redirect to="/auth" />
  )
}
  />
);

const mapStateToProps = state => ({
  authenticated: state.user.authenticated,
  checked: state.user.checked
});

UnauthRoute.propTypes = {
  user: PropTypes.object
};

export default connect(mapStateToProps)(UnauthRoute);

Приложение. js:

  return (
      <Provider store={store}>
        <Router basename="/">
            <Header />
            <div className="content-wrapper">
              <Switch>
            <Route exact path="/" component={home} />
            <UnauthRoute path="/profile" component={profile} />
            <Route path="/user" component={user} />>
          </Switch>
        </div>
        <Footer />
    </Router>
  </Provider>
...