【发布时间】:2016-09-27 20:01:35
【问题描述】:
我想根据部分状态使用不同的路由,所以我想出了以下内容:
在我的条目文件中:
import routes from './routes.js'
ReactDOM.render(
<IntlProvider locale={locale} messages={messages[locale]}>
<Provider store={store} key='provider'>
<div>
<Router history={history} routes={routes(store)} />
</div>
</Provider>
</IntlProvider>,
document.getElementById('root')
)
routes.js:
export default (store) => (
let isAuthenticated = store.getState().auth.isAuthenticated
if(isAuthenticated) {
return (
<Route component={Tool}>
<IndexRoute component={Dashboard} />
<Route path="products" component={Products} />
</Route>
)
} else {
return (
<Route>
<Route component={Site}>
<IndexRoute component={Home} />
<Route path="pricing" component={Pricing} />
</Route>
<Route component={Portal}>
<Route path="login" component={Login} />
<Route path="register" component={Register} />
</Route>
</Route>
)
}
)
这有效,但前提是我真的刷新了页面。如果我只是登录而不刷新浏览器页面,它将但是不会转换从 Home 组件到 Dashboard 组件,所以我怀疑 routes 对象在开始时只构建一次并建立在当前状态上,但是如果状态在执行过程中改变,则不会改变。
我还发现 https://github.com/ReactTraining/react-router/blob/master/docs/guides/DynamicRouting.md 这与动态路由有关,但当我尝试它时,它似乎并没有达到我希望或预期的效果。
【问题讨论】:
-
React Router 内置了这个功能。请参考:github.com/ReactTraining/react-router/tree/master/examples/…
-
@DanWinter-Wijntjes 我看不出这个例子是如何演示的。这不是关于身份验证流程,而是关于动态路由,并且示例中的路由对我来说似乎是静态的。
标签: reactjs redux react-router react-router-redux