我正在尝试理解如何构建我的redux应用程序,如果我需要从多个端点检索相互依赖的数据。
例如,假设我有一个列出事件详细信息的组件。我有一个事件ID,我需要获取该事件的所有信息,以及事件时间之间发生的所有事件。为了让我知道要搜索的事件,我需要获取所选事件的开始和结束时间。
如何构建组件来处理它?到目前为止,我在想的是:
({event, conflictingEvents,fetchEvent, fetchConflictingEvents}) => {
if (!event || !conflictingEvents) {
if (!event) fetchEvent();
if (!conflictingEvents) fetchConflictingEvents(event.start, event.end)
return (/* empty state */);
}
return (/* actual state */);
上面的问题是它依赖于缓存而不创建无限循环。
答案 0 :(得分:5)
如果我理解正确,您正在尝试编排多个异步HTTP调用并随时更新应用程序的状态,对吗?
此任务的惯用方法是使用async actions 。这允许您通过单个调度异步操作从React组件触发加载过程。然后,此异步操作将协调对后端的调用以及调用之间的数据映射。
您可以根据需要调度同步操作以更新应用程序的状态,例如:向用户显示进度或显示最终结果。
因此,您已完全封装了API调用的编排。呈现应用程序的React组件和缩减器都不需要知道调用的顺序,也不需要知道它们之间传递的信息。只有您所在国家/地区应有的通话的中间和最终结果与他们相关。
作为异步操作的替代方法,您还可以查看 sagas ,它采用略有不同的方法解决问题。