Я хочу, чтобы мое приложение перенаправляло в / login и отображало AuthenticationPage, когда пользователь не вошел в систему, а когда вошел в журнал перенаправление в / dashboard. Мое состояние Redux "зарегистрировано" работает правильно, я вижу его в redux devtools, когда я нажимаю кнопку входа, оно меняет значение на true, но маршрутизатор не меняет путь к / dashboard, он / логин все время.
import React, {useEffect} from 'react';
import AuthenticationPage from './AuthenticationPage';
import '../styles/App.css';
import Dashboard from './Dashboard';
import {TOGGLE_LOGIN} from "../redux/actionTypes"
import {connect} from 'react-redux'
import {BrowserRouter as Router, Switch, Route, Redirect} from "react-router-dom";
function App(props) {
useEffect(()=>{
if(window.localStorage.getItem('isLogged')==="true"){
props.toggleLogin();
}
},[])
return (
<div className="App">
<Router>
<Switch>
<Route exact path="/">
{props.isLogged ? <Redirect to = "/dashboard"/> : <Redirect to = "/login"/>}
</Route>
<Route path = "/dashboard">
<Dashboard/>
</Route>
<Route path = "/login">
<AuthenticationPage/>
</Route>
</Switch>
</Router>
</div>
);
}
const mapStateToProps = state => {
const { isLogged } = state.LogInReducer;
return {
isLogged
};
}
const mapDispatchToProps = dispatch=>{
return{
toggleLogin: ()=>dispatch({type: TOGGLE_LOGIN})
}
}
export default connect(mapStateToProps, mapDispatchToProps)(App);