我有一个如下所示的路由器:
<Router history={hashHistory}>
<Route path="/" component={App}>
<IndexRoute component={Index}/>
<Route path="login" component={Login}/>
</Route>
</Router>
这是我想要实现的目标:
- 将用户重定向到
/login
如果没有登录 - 如果用户尝试访问
/login
当他们已经登录时,将他们重定向到 root/
所以现在我正在尝试检查 App
的 componentDidMount
中的用户状态,然后执行以下操作:
if (!user.isLoggedIn) {
this.context.router.push('login')
} else if(currentRoute == 'login') {
this.context.router.push('/')
}
这里的问题是我找不到获取当前路线的 API。
我发现 这个已关闭的问题 建议使用 Router.ActiveState mixin 和路由处理程序,但看起来这两个解决方案现在已被弃用。
原文由 wxtry 发布,翻译遵循 CC BY-SA 4.0 许可协议
阅读更多文档后,我找到了解决方案:
https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/location.md
我只需要访问组件实例的注入属性
location
,例如: