Redux数据依赖关系管理

时间:2016-06-20 15:14:49

标签: reactjs redux dependency-management

我正在尝试理解如何构建我的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 */);

上面的问题是它依赖于缓存而不创建无限循环。

1 个答案:

答案 0 :(得分:5)

如果我理解正确,您正在尝试编排多个异步HTTP调用并随时更新应用程序的状态,对吗?

此任务的惯用方法是使用async actions 。这允许您通过单个调度异步操作从React组件触发加载过程。然后,此异步操作将协调对后端的调用以及调用之间的数据映射。

您可以根据需要调度同步操作以更新应用程序的状态,例如:向用户显示进度或显示最终结果。

因此,您已完全封装了API调用的编排。呈现应用程序的React组件和缩减器都不需要知道调用的顺序,也不需要知道它们之间传递的信息。只有您所在国家/地区应有的通话的中间和最终结果与他们相关。

作为异步操作的替代方法,您还可以查看 sagas ,它采用略有不同的方法解决问题。