Изменение состояния redux не меняет маршрут в реагирующем маршрутизаторе - PullRequest
0 голосов
/ 12 июля 2020

Я хочу, чтобы мое приложение перенаправляло в / 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);
...