在 Flux 中,让通用组件调用 ActionCreator 是否合理?
In Flux, is it kosher to have generic components call the ActionCreator?
我发现的大多数 Flux 文档都缺少关于组件与容器的讨论。
我知道将容器作为负责收听商店的唯一元素被认为是最佳做法。这绝对有道理,因为;
- 它限制了监听商店的组件数量。
- 子组件只有一个位置(它们的 props)可以从中接收数据。
但一些解释暗示容器也应该负责对 ActionCreator 的所有调用。在这一点上,我并没有真正看到优势。
说服我我错了?
免责声明: 我对 Flux 的唯一体验来自 Redux,这不是完全相同的模式——也就是说,我相信两种方式的概念都是相同的。
实际上,让容器调用 action creators 背后的原因与通过 props 传递数据而不是让每个组件都监听 store 的原因是一样的——这意味着你的展示组件不需要了解他们周围的世界。
以待办事项列表应用程序为例(完全原创,一点儿也不夸张)。您 可以 硬编码单击 TodoItem
会触发 CompleteTodo
操作 - 但是如果我想在我的其他地方显示该项目的只读版本应用程序,我必须制作另一个不调用该动作创建者的组件版本。如果你传递一个回调来调用 action creator 作为一个可选的 prop,那么该项目就不再需要管理它被点击时发生的事情——它只需要在它发生时告诉父级,然后父级可以自由地做它想做的事情想要这些信息,甚至完全忽略它。
这不是一个完美的例子,但希望它能说明为什么有些人建议这样做的原因!
我发现的大多数 Flux 文档都缺少关于组件与容器的讨论。
我知道将容器作为负责收听商店的唯一元素被认为是最佳做法。这绝对有道理,因为;
- 它限制了监听商店的组件数量。
- 子组件只有一个位置(它们的 props)可以从中接收数据。
但一些解释暗示容器也应该负责对 ActionCreator 的所有调用。在这一点上,我并没有真正看到优势。
说服我我错了?
免责声明: 我对 Flux 的唯一体验来自 Redux,这不是完全相同的模式——也就是说,我相信两种方式的概念都是相同的。
实际上,让容器调用 action creators 背后的原因与通过 props 传递数据而不是让每个组件都监听 store 的原因是一样的——这意味着你的展示组件不需要了解他们周围的世界。
以待办事项列表应用程序为例(完全原创,一点儿也不夸张)。您 可以 硬编码单击 TodoItem
会触发 CompleteTodo
操作 - 但是如果我想在我的其他地方显示该项目的只读版本应用程序,我必须制作另一个不调用该动作创建者的组件版本。如果你传递一个回调来调用 action creator 作为一个可选的 prop,那么该项目就不再需要管理它被点击时发生的事情——它只需要在它发生时告诉父级,然后父级可以自由地做它想做的事情想要这些信息,甚至完全忽略它。
这不是一个完美的例子,但希望它能说明为什么有些人建议这样做的原因!