【发布时间】:2018-08-25 07:05:34
【问题描述】:
我正在设计带有节点服务器的反应应用程序。我创建了一条自定义私人路线
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;
我在登录后将自己从节点服务器重定向到仪表板路由。
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);
目前,我的仪表板会查找有关身份验证的 cookie 并更新我的商店。但是在添加 custom route 后,会重定向到 login page,这是因为我的自定义路由找不到更新的 store,因为它已在仪表板中更新。我被困在这里。我尝试在我的自定义路线中进行更新,但我给自己增加了更多的困惑。任何建议和解决方案都表示赞赏。
谢谢
【问题讨论】:
标签: javascript reactjs redux react-redux react-router-dom