Should the action or store be responsible for transforming data when using React + Flux?

独自空忆成欢 提交于 2019-12-06 08:11:11

问题


When using React and Flux, it's standard practice to make API calls from actions, and then store the resulting data in a Store class. But who should be responsible for transforming that data after it's been stored?

Example: I've got an EntryStore that keeps hold of objects representing shopping list items. I have a number of filters that I can apply to them (e.g "show only dairy"). I currently have this working by calling EntryActions.filterEntries('dairy'), which the dispatcher then passes to EntryStore where a _filterEntries(tag) method transforms theEntryStore._entries array. Is this considered best practice? Should the action itself transform the list of entries, then pass it to EntryStore to simply save? How dumb should the Store be in this case?


回答1:


Yep, you're right! In Flux, we want to keep the data structure flat, and let any data manipulation occur in the Stores themselves. The data-flow is essentially:

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

Mutation of data has to happen through calling actions from your views/components. The data stores listen on these actions and mutate the data within the store (including filtering, and any other data mutations or logic you may need)



来源:https://stackoverflow.com/questions/26494492/should-the-action-or-store-be-responsible-for-transforming-data-when-using-react

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!