我正在使用 redux、react、react-router 和重新选择。有一个屏幕包含两个组件,Header
和Body
。中有一个组件Header
可以选择一个ID。当一个新的 ID 被选中时,一个新的 action 被调度来更新 redux 中状态的 ID。
基于该 ID,应该有一个异步 API 调用来从服务器加载元素并将其存储在状态中,然后应该触发屏幕渲染并在Body
. 然后将通过重新选择从状态中提取加载的元素。
实际情况比这要复杂一些,因为有许多不同的Body
组件具有不同的 API 调用,而且只有一个Header
组件。但它们可以被视为不同的屏幕。因此,例如:
屏幕一:
组件:Header
, BodyTypeA
; 调用API:apiA
屏幕 2:
组件:Header
, BodyTypeB
; 调用API:apiB
我的理解是,API调用应该在reducer中将新ID存储在状态中时完成。但是,如果动作是由跨屏幕共享的组件调度的,如何确定正在显示哪个屏幕以及调用哪个 API?我可以以某种方式订阅Body
对 ID 的更改并从屏幕内触发 API 调用吗?屏幕类型由 react-router 决定。减速器是否可以访问路由器以确定正在显示哪个屏幕?是否有处理这种情况的最佳实践?