每次组件渲染时,状态似乎都会恢复为默认状态



我正在开发React/Redux/Thunk/Rect Router应用程序,每次组件渲染时,每个reducer的状态似乎都意外地恢复到默认状态。

例如:

我浏览到主页路由,呈现主页组件,并正确设置了状态-新状态在loggerMiddleware的输出中显示为预期状态,应用程序也按预期工作。

然而,当我浏览到另一个路由并呈现EventPage组件时,状态就好像是空的/默认的——mapStateToProps中的state参数只是一个空对象的列表,就好像我看到的是组合教育器的默认输出。我在loggerMiddleware输出中看到了同样的东西。类似地,当我浏览回主页组件时,状态再次为空/默认。

我的期望是,状态将保持在页面视图/组件呈现之间。这是正确的吗?

有问题的应用程序的一些摘录,以防它有助于识别我正在犯的任何错误-很高兴提供更多:

事件页面和主页组件/容器的底部:

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路由器导入的<Link>元素。这并不能解决用户在地址栏中手动输入新URL的问题,但确实解决了链接的问题。我相信这其实是意料之中的行为。如果我错了,我相信有人会纠正我的。

相关内容

  • 没有找到相关文章

最新更新