反应流动行为和商店阶级依赖

时间:2016-01-17 15:51:11

标签: javascript reactjs ecmascript-6 flux reactjs-flux

据我了解React-Flux架构,Flux Actions类应通过Store将其事件传播到AppDispatcher类。

但是,我看到一些例子是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架构以及数据在应用中的流动方式。

问题是,这是正常的吗?这不是一种不好的做法吗?

1 个答案:

答案 0 :(得分:0)

您认为这是不正确的,并打破了单向数据流的概念。该操作可以处理组件提供给它的数据,但我不明白为什么它需要或者应该要求商店提供任何数据或知识。

这打破了inversion of control的原则,因为动作需要知道商店的自定义实现,而不是简单地调度带有数据的事件 - 这是一种通量为试图避免!