【发布时间】:2016-11-01 16:52:33
【问题描述】:
我正在使用 redux、react、react-router 和 reselect。有一个包含两个组件的屏幕,Header 和Body。 Header中有一个组件可以选择一个ID。当一个新的 ID 被选中时,一个新的 action 会被调度来更新 redux 中 state 的 ID。
基于该 ID,应该有一个异步 API 调用从服务器加载元素并将其存储在状态中,然后应该触发屏幕渲染并在 Body 中显示元素。然后,加载的元素将通过重新选择从状态中提取出来。
实际情况比这要复杂一些,因为有许多不同的Body 组件具有不同的API 调用,而Header 组件只有一个。但它们可以被视为不同的屏幕。所以,例如:
屏幕 1:
组件:Header、BodyTypeA;调用API:apiA
屏幕 2:
组件:Header,BodyTypeB; API调用:apiB
我的理解是,API调用应该在reducer中存储新ID的状态下进行。但是,如果动作是由跨屏幕共享的组件调度的,如何确定正在显示哪个屏幕以及调用哪个 API?我可以以某种方式订阅Body 以更改 ID 并从屏幕内触发 API 调用吗?屏幕类型由 react-router 决定。减速器是否可以访问路由器以确定显示哪个屏幕?有处理这种情况的最佳做法吗?
【问题讨论】:
标签: javascript reactjs redux react-redux reselect