每次组件呈现时,状态似乎都恢复为默认值
State seems to revert to default each time a component renders
我正在开发一个 React/Redux/Thunk/React 路由器应用程序,每次组件呈现时,状态似乎都意外地恢复到每个 reducer 的默认状态。
例如:
我浏览到 Homepage 路由,呈现 Homepage 组件,状态设置正确 - 新状态在 loggerMiddleware 的输出中按预期显示,应用程序按预期工作。
但是,当我浏览到另一条路线并呈现一个 EventPage 组件时,就好像状态是 empty/default - mapStateToProps 中的 state
参数只是一个空对象列表,就好像我看到了 combinereducers 的默认输出。我在 loggerMiddleware 输出中看到同样的事情。同样,当我浏览回主页组件时,状态再次变为 empty/default.
我的期望是状态将在页面 views/component 呈现之间保持不变。对吗?
相关应用程序的一些摘录,以防它有助于识别我犯的任何错误 - 也很乐意提供更多内容:
活动页面和主页底部components/containers:
export default connect(mapStateToProps, mapDispatchToProps)(HomePage);
export default connect(mapStateToProps, mapDispatchToProps)(EventPage);
index.js
中定义的路由器
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory} >
<Route path="/" component={HomePage}/>
<Route path="EventsSimpleList" component={EventsSimpleList}/>
<Route path="events/:eventId" component={EventPage}/>
</Router>
</Provider>
, document.querySelector('#root'));
我的 rootReducer 定义:
const rootReducer = combineReducers({
EventsToAssets: EventsToAssetsReducer,
Assets: AssetsReducer,
Events: EventsReducer,
Venues: VenuesReducer,
Artists: ArtistsReducer,
Homepage: HomepageReducer
});
export default rootReducer;
我已通过将 <a>
元素替换为从 react-router 导入的 <Link>
元素来解决问题。这不能解决用户在地址栏中手动输入新 URL 的问题,但可以解决链接的问题。我相信这实际上是预期的行为。如果我错了,我相信有人会纠正我。
我正在开发一个 React/Redux/Thunk/React 路由器应用程序,每次组件呈现时,状态似乎都意外地恢复到每个 reducer 的默认状态。
例如:
我浏览到 Homepage 路由,呈现 Homepage 组件,状态设置正确 - 新状态在 loggerMiddleware 的输出中按预期显示,应用程序按预期工作。
但是,当我浏览到另一条路线并呈现一个 EventPage 组件时,就好像状态是 empty/default - mapStateToProps 中的 state
参数只是一个空对象列表,就好像我看到了 combinereducers 的默认输出。我在 loggerMiddleware 输出中看到同样的事情。同样,当我浏览回主页组件时,状态再次变为 empty/default.
我的期望是状态将在页面 views/component 呈现之间保持不变。对吗?
相关应用程序的一些摘录,以防它有助于识别我犯的任何错误 - 也很乐意提供更多内容:
活动页面和主页底部components/containers:
export default connect(mapStateToProps, mapDispatchToProps)(HomePage);
export default connect(mapStateToProps, mapDispatchToProps)(EventPage);
index.js
中定义的路由器ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory} >
<Route path="/" component={HomePage}/>
<Route path="EventsSimpleList" component={EventsSimpleList}/>
<Route path="events/:eventId" component={EventPage}/>
</Router>
</Provider>
, document.querySelector('#root'));
我的 rootReducer 定义:
const rootReducer = combineReducers({
EventsToAssets: EventsToAssetsReducer,
Assets: AssetsReducer,
Events: EventsReducer,
Venues: VenuesReducer,
Artists: ArtistsReducer,
Homepage: HomepageReducer
});
export default rootReducer;
我已通过将 <a>
元素替换为从 react-router 导入的 <Link>
元素来解决问题。这不能解决用户在地址栏中手动输入新 URL 的问题,但可以解决链接的问题。我相信这实际上是预期的行为。如果我错了,我相信有人会纠正我。