在使用React + Flux时,操作或存储是否应该负责转换数据?

时间:2014-10-21 19:14:53

标签: reactjs reactjs-flux

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

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

1 个答案:

答案 0 :(得分:3)

是的,你是对的!在Flux中,我们希望保持数据结构平坦,并让商店本身进行任何数据操作。数据流本质上是:

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

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