我正在构建一个基于 reactjs、redux 和 react-router (redux-simple-router) 的网站,并且我有点纠结于如何根据用户是否经过身份验证来共享根路径。
我在看这个例子https://github.com/reactjs/react-router/tree/master/examples/auth-with-shared-root,但老实说我无法让它工作。
我有两种不同的布局。第一个是公共布局,当用户未通过身份验证时显示。从这里您可以访问登录页面和注册。
用户通过身份验证后,我想向他展示内部应用程序,这是一个完全不同的布局,但在同一个根 URL 中进行。
当用户未通过身份验证时:
<Route path='/' name='homepage' component={SiteLayout}>
<IndexRoute component={HomeView} />
<Route path='/login' name='login' component={LoginView} />
<Route path='/join' name='join' component={RegistrationView} />
<Route path='/404' component={NotFoundView} />
<Redirect from='*' to='/404' />
</Route>
并且在认证之后,保持相同的根 URL。
<Route path='/' name='feeds' component={InternalLayout}>
<IndexRoute component={FeedsView} />
<Route path='/profile' name='login' component={ProfileView} />
<Route path='/settings' name='join' component={SettingsView} />
<Route path='/search' name='join' component={SearchView} />
</Route>
就像 Facebook 一样。
我的问题是(如果你能提供一个例子那就太好了):如何根据身份验证状态在同一个 URL 下呈现不同的布局?
PD:我有一个 Token 类,我在其中存储身份验证状态 (JWT),并带有一个方法 hasToken。
在我使用 JSX 语法的示例中,我不知道是否必须切换到配置语法才能获得所需的结果。
任何帮助表示赞赏。