在 Flux 中,让通用组件调用 ActionCreator 是否合理?

In Flux, is it kosher to have generic components call the ActionCreator?

我发现的大多数 Flux 文档都缺少关于组件与容器的讨论。

我知道将容器作为负责收听商店的唯一元素被认为是最佳做法。这绝对有道理,因为;

  1. 它限制了监听商店的组件数量。
  2. 子组件只有一个位置(它们的 props)可以从中接收数据。

但一些解释暗示容器也应该负责对 ActionCreator 的所有调用。在这一点上,我并没有真正看到优势。

说服我我错了?

免责声明: 我对 Flux 的唯一体验来自 Redux,这不是完全相同的模式——也就是说,我相信两种方式的概念都是相同的。

实际上,让容器调用 action creators 背后的原因与通过 props 传递数据而不是让每个组件都监听 store 的原因是一样的——这意味着你的展示组件不需要了解他们周围的世界。

以待办事项列表应用程序为例(完全原创,一点儿也不夸张)。您 可以 硬编码单击 TodoItem 会触发 CompleteTodo 操作 - 但是如果我想在我的其他地方显示该项目的只读版本应用程序,我必须制作另一个不调用该动作创建者的组件版本。如果你传递一个回调来调用 action creator 作为一个可选的 prop,那么该项目就不再需要管理它被点击时发生的事情——它只需要在它发生时告诉父级,然后父级可以自由地做它想做的事情想要这些信息,甚至完全忽略它。

这不是一个完美的例子,但希望它能说明为什么有些人建议这样做的原因!