Это мое приложение. 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 на эту страницу?