如何使用 Alt (Flux) 从多个组件同时触发动作

How to fire actions simultaneously from multiple components with Alt (Flux)

我正在使用 Alt 库来实现 Flux 架构。我有一个组件,它显示有关电影的信息。现在我陷入了一种情况,我需要在我的主页下呈现这些组件的数组。问题是这些组件中的每一个都在 componentDidMount 中调用 ajax request。所以当我有不止一个时 - 我得到:

Uncaught Error: Invariant Violation: Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.

我写了一个更长的post here,这是一个更简洁的版本。我根本无法理解问题的本质。

编辑:用图片说明。基本上我得到第一个组件的 poster,第二个组件抛出错误并停止工作:

经过几天的研究和一些帮助,我的问题得到了解决。

简单的回答是:你不能。这不仅被认为是不好的做法,而且 Flux 反模式,因此受到标准 Facebook 调度程序的限制(Alt 使用).正确的方法是从 top-most 组件处理 actionsstores 。您也可以使用自定义调度程序,但我想它不会无缘无故受到限制。

在我的例子中,这是主页组件,我所做的是触发单个 action,它获取所有电影海报,然后使用 传递该信息道具

据我所知,最佳做法是在 最顶层 有一个 容器组件,它只负责行动商店。然后在容器内部 - 一个 view component(一个或多个),负责渲染 UI 和数据。我发现 this 篇文章内容丰富。