Javascript 在自定义路由之前更新存储

Javascript 在自定义路由之前更新存储,javascript,reactjs,redux,react-redux,react-router-dom,Javascript,Reactjs,Redux,React Redux,React Router Dom,我正在用节点服务器设计react应用程序。我已经创建了一个自定义的私有路由 import React from 'react'; import {connect} from 'react-redux'; import {Route, Redirect} from 'react-router-dom'; class PrivateRoute extends React.Component{ render() { const { isAuthenticated, compo

我正在用节点服务器设计react应用程序。我已经创建了一个自定义的私有路由

import React from 'react';
import {connect} from 'react-redux';
import {Route, Redirect} from 'react-router-dom';

class PrivateRoute extends React.Component{
    render() {
        const { isAuthenticated, component: Component, ...rest } = this.props;

        return (
            <Route {...rest} component={(props) => {
                if(isAuthenticated){
                    return <Component {...props}/>
                }
                else{
                    return <Redirect to="/login" />
                }
            }}/>
        )
    }
}

const mapStateToProps = (state) => {
    return{
        isAuthenticated: state.auth.email !== '' ? true : false
    }
}

const ConnectedPrivateRoute = connect(mapStateToProps)(PrivateRoute)
export default ConnectedPrivateRoute;
从“React”导入React;
从'react redux'导入{connect};
从“react router dom”导入{Route,Redirect};
类PrivateRoute扩展了React.Component{
render(){
const{isAuthenticated,component:component,…rest}=this.props;
返回(
{
如果(未经验证){
返回
}
否则{
返回
}
}}/>
)
}
}
常量mapStateToProps=(状态)=>{
返回{
isAuthenticated:state.auth.email!=''?true:false
}
}
const ConnectedPrivateRoute=connect(mapStateToProps)(PrivateRoute)
导出默认连接的PrivateRoute;
登录后,我将自己从node serer重定向到仪表板路由

import React from 'react';
import axios from 'axios';
import {connect} from 'react-redux';
import { setAuthenticatedUser } from '../actions/authA';

class Dashboard extends React.Component{
  constructor(props) {
    super(props);
    axios.get('/cookie').then((user) => {
      if(user.data.email)
        this.props.dispatch(setAuthenticatedUser(user.data));
    })
    .catch((e) => {
      console.log("Got some error");
    })
  }
  render() {
    return (
      <div>Dashboard Page</div>
    );
  }
}

export default connect()(Dashboard);
从“React”导入React;
从“axios”导入axios;
从'react redux'导入{connect};
从“../actions/authA”导入{setAuthenticatedUser};
类Dashboard扩展了React.Component{
建造师(道具){
超级(道具);
获取('/cookie')。然后((用户)=>{
if(user.data.email)
this.props.dispatch(setAuthenticatedUser(user.data));
})
.catch((e)=>{
log(“出现了一些错误”);
})
}
render(){
返回(
仪表板页面
);
}
}
导出默认连接()(仪表板);
当前我的仪表板查找有关身份验证和更新我的存储的cookie。但是在添加
自定义路由
后,会发生重定向到
登录页面
,这是因为我的自定义路由找不到更新的
存储
,因为它已在仪表板中更新。我被困在这里了。我尝试在我的自定义路线中更新,但我给自己增加了更多的困惑。欢迎提出任何建议和解决方案


谢谢

如果你发布你的
登录
组件,我可以更好地回答这个问题

话虽如此,仪表板组件不负责
setAuthenticatedUser
,因为如果他们能够导航到仪表板,就意味着他们已经通过了身份验证


用户登录后,您应该调用
setAuthenticatedUser
,然后重定向到仪表板,这样您的
PrivateRoute
组件就不会强制进行不必要的重定向。

如果您发布
登录
组件,我可以更好地回答这个问题

话虽如此,仪表板组件不负责
setAuthenticatedUser
,因为如果他们能够导航到仪表板,就意味着他们已经通过了身份验证


用户登录后,您应该调用
setAuthenticatedUser
,然后重定向到仪表板,这样您的
PrivateRoute
组件就不会强制进行不必要的重定向。

是的,这是上次尝试开始我的设置。我在找和你说的一样的。幸运的是,我使用本地存储成功地获得了正确的东西。谢谢您的回答。是的,这是我上次尝试开始安装的时候。我在找和你说的一样的。幸运的是,我使用本地存储成功地获得了正确的东西。谢谢你的回答。