【发布时间】:2016-09-01 21:41:22
【问题描述】:
假设我有以下主要的 React 应用程序,使用 react-redux 和 react-router(但还不是 react-router-redux):
<Provider store={store}>
<Router history={hashHistory}>
<Route path="/" component={App}>
<IndexRoute component={LoginRequiredPage}/>
<Route path="/login" component={Login} />
<Route path="/entries" component={ShowEntries} />
</Route>
</Router>
</Provider>
在我的商店中,我的状态为 isLoggedIn,当isLoggedIn 为真时,我想将IndexRoute 的组件更改为ShowEntries,如果它变为假,则改回LoginRequiredPage。我不确定如何实现这一点,但可以想到几种方法:
- 使用
IndexRoute上的 react-reduxconnect方法将isLoggedIn映射到其component属性的新值。 - 创建一个
Home组件,将其连接到商店,根据isLoggedIn切换其子组件,并将Home作为新的IndexRoute组件
哪个选项更好,或者有更好的解决方案?
我希望在索引路由处于活动状态并且isLoggedIn 状态发生更改时更改当前视图。
【问题讨论】:
-
我的答案是第二个选项。您不能简单地将
Route或Router连接到Store,因此您需要通过Route的component属性提供连接的组件,或者使用您创建的商店直接在路由器配置中执行一些重定向魔术早一点。
标签: redux react-router react-redux