反应通量动作并存储类依赖项
Posted
技术标签:
【中文标题】反应通量动作并存储类依赖项【英文标题】:react flux actions and store class dependecies 【发布时间】:2016-04-22 18:31:22 【问题描述】:据我了解React-Flux 架构,Flux Actions
类应该通过AppDispatcher
将它们的事件传播到Store
类。
但是,我看到一些示例是 Action
类直接从 Store
类获取数据以执行某些操作...
示例:
import ... /* a few more imports */
import AppDispatcher from 'AppDispatcher.js';
import SomeStore from 'SomeStore.js';
class SomeActions
processItemData()
var item = SomeStore.getCurrentItem();
.
.
// do something with the item
.
.
// then data dispatched (anyway) to SomeStore or maybe other Store class
AppDispatcher.dispatch(...);
正如我所见 - 在此处导入 SomeStore.js
会破坏 Flux
架构和数据在应用中流动的方式。
问题是,这正常吗?这不是不好的做法吗?
【问题讨论】:
我不确定是否有一个正确的答案,但我肯定会考虑从组件传递数据,它会启动操作并从组件内的存储中获取数据,而不是导入存储在动作中,从而坚持 Flux 流:facebook.github.io/react/blog/2014/07/30/… 【参考方案1】:您认为这是不正确的,并且打破了单向数据流的概念。该操作可以处理组件提供给它的数据,但我不明白为什么它需要或应该需要来自商店的任何数据或知识。
这违反了inversion of control 的原则,因为该操作需要了解 store 的自定义实现,而不是简单地调度带有数据的事件 - 这是 Flux 试图避免的那种架构!
【讨论】:
以上是关于反应通量动作并存储类依赖项的主要内容,如果未能解决你的问题,请参考以下文章