使用 React + Flux 时,action 或 store 是否应该负责转换数据?

IT技术 reactjs reactjs-flux
2021-05-24 10:27:46

使用 React 和 Flux 时,标准做法是从操作进行 API 调用,然后将结果数据存储在 Store 类中。但是谁应该负责在数据存储后转换数据?

示例:我有一个EntryStore可以保存代表购物清单项目的对象。我有许多可以应用于它们的过滤器(例如“仅显示dairy”)。我目前通过调用具有这个工作EntryActions.filterEntries('dairy'),该调度程序然后转到EntryStore其中_filterEntries(tag)方法变换EntryStore._entries数组。这被认为是最佳实践吗?操作本身是否应该转换条目列表,然后将其传递EntryStore给简单地保存?在这种情况下,Store 应该有多愚蠢?

1个回答

是的,你说得对!在 Flux 中,我们希望保持数据结构平坦,并让任何数据操作发生在 Stores 本身。数据流本质上是:

Component --> (actions) --> Dispatcher --> (callback) ---> Stores -----+
Ʌ                                                                      |
|                                                                      V
+-- ("change" event handlers) --------------------- (change events) ---+

数据的变异必须通过从您的视图/组件调用操作来发生。数据存储监听这些操作并改变存储中的数据(包括过滤,以及您可能需要的任何其他数据改变或逻辑)