我根本不知道为什么我的重定向上的以下状态无法在目标组件中访问。
这些是路线:
{
path: '/logout',
component: () => <Redirect to={{
pathname: '/login',
state: {referrer: "logout"}
}}/>
},
{ path : '/login',
component: Login
}
在登录组件(/login 路径的接收者)中,我只需检查状态对象,该对象始终未定义:
componentDidUpdate(prevProps, prevState) {
if(this.props.location.state !== undefined) {
alert("i come from logout");
}
}
当然,我的登录组件是由 HOC withRouter() 包装的。不过我正在使用react-router-config。不知道和这个有没有关系。
有人对此有什么好主意吗?
也许我可以通过检查 location.history 来选择一种解决方法,看看我是否来自注销,是否将其放入重定向历史记录中,但我宁愿理解为什么这个状态不起作用。
谢谢
最佳答案
由于 /login
是不同的路由,因此您应该在 componentDidMount
生命周期方法中进行检查,而不在 componentDidUpdate
中进行检查,因为路由将挂载并且不重新渲染
componentDidMount() {
if(this.props.location.state !== undefined) {
alert("i come from logout");
}
}
关于reactjs - 状态重定向在 React Router 4.x 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50795471/