【发布时间】:2016-01-11 21:33:00
【问题描述】:
我想根据外部条件渲染组件,否则在应用程序的其他地方重定向。
理想情况下,此重定向将在组件之前决定,但在某些情况下,我觉得我需要在组件中执行此操作。例如,在 ReactRouter 中,路由器可能如下所示:
<Router>
<Route path='/' component={LoadingPage} />
<Route path='/Home' component={HomePage} />
<Route path='/Login' component={LoginPage} />
</Router>
LoadingPage 的逻辑 / sudocode 将如下所示:
if (stillLoading) {
render
} else if (loggedIn) {
redirectToHome
} else {
redirectToLogin
}
这很复杂,因为有时应用程序在组件被请求之前就已经加载了。
哪个生命周期阶段最适合放置此重定向逻辑?
- 渲染/从渲染调用的方法? (看起来很奇怪)
- ComponentDidMount + 为以后创建一个事件监听器?
- 获取初始状态? (但不应该有副作用?)
- ComponentWillMount?
- 其他?
【问题讨论】:
-
查看 React Router 文档中的
onEnter,以及 repo 中的 auth-flow 示例 -
@knowbody - 太棒了!这正是我正在寻找的。所以答案确实是 null - 在组件启动之前进行重定向
标签: javascript reactjs react-router