Почему ввод React Routes вручную не работает, он перенаправляет на другую страницу - PullRequest
1 голос
/ 02 февраля 2020

Это мое приложение. js класс. Он подключен к Redux Store.

class App extends Component {
  componentDidMount() {
    this.props.checkLocalStorageIfTokenExists();
  }

  render() {
    let routes = null;
    if (this.props.isAuthenticated) {
      routes = (
        <Switch>
          <Route path="/dashboard" component={Dashboard} />
          <Route path="/settings" component={Settings} />
          <Route path="/details/:countryId" component={CountryDetails} />
          <Redirect to="/dashboard" />
        </Switch>
      );
    } else {
      routes = (
        <Switch>
          <Route path="/login" exact component={Login} />
          <Route path="/register" exact component={Register} />
          <Route path="/" exact component={Home} />
          <Redirect to="/" />
        </Switch>
      );
    }
    return routes;
  }
}

const mapStateToProps = state => {
  return {
    isAuthenticated: state.authReducer.idToken !== null
  };
};

const mapDispathToProps = dispatch => {
  return {
    checkLocalStorageIfTokenExists: () => dispatch(checkLocalStorage())
  };
};

export default withRouter(connect(mapStateToProps, mapDispathToProps)(App));

Когда я вхожу в систему, он перенаправляет меня на «/ dashboard», что идеально, и все другие маршруты работают так, как они ожидают. Но когда я вручную набираю URL в браузере (например: http://localhost: 3000 / settings ), он перенаправляет меня в «/ dashboard». Я понимаю, что когда я вручную набираю URL, все приложение загружается снова, и если я не ошибаюсь, магазин Redux также снова создается.

Примечание: метод checkLocalStorageIfTokenExists () просто проверяет localStorage и изменяет состояние Redux LoggedIn (инициализирует токен).

Так что мой вопрос ... есть ли способ ввести URL-адрес вручную и go на эту страницу?

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