如何等待从另一家商店在一家商店发生的调度

时间:2015-11-30 19:59:57

标签: javascript reactjs ecmascript-6 flux

我正在使用来自Facebook的Flux,做出反应,ES6。

我对那些单身商店有不同的问题。然而,反复出现的是以下内容。我从一个组件发出一个动作,我有两个商店(StoreA,StoreB)正在监听该动作。

我的两个商店分为两个不同的文件,每个文件都导出单件商店实例。两个商店都已导入其相关容器(React组件视图)。我希望StoreA在StoreA中启动流程之前等待StoreB完成当前调度的处理。

我已经阅读了doc,并且有一个waitFor方法可以与调度程序的register方法返回的标记一起使用。但是我的两个商店都在不同的文件中。无法找到从StoreA访问StoreB的调度令牌的方法......

换句话说:

ReactComp.js

a=[1 0 2 0 3 0 4];
//Use of interp1.m
Output=[1 1.5 2 2.5 3 3.5 4];

a=[1 0 0 2 0 0 3 0 0 4];
//Use of interp1.m
Output=[1 1.32 1.65 2 2.31 2.64 3 3.3 3.63 4];

StoreA.js

...
handleClick() {
    dispatcher.dispatch({
        type: 'ACTION1'
    });
}

StoreB.js

class StoreA {
    constructor() {
        this.dispatchToken = dispatcher.register((action) => {
            switch(action.type) {
                case 'ACTION1':
                    // do something...
                    break;
            }
        });
    }
}

export default new StoreA();

我是反应和通量架构的新手,答案可能是显而易见的,如果是的话,对不起,但是如果把所有的时间都投入到寻找答案的失败中,那么我打赌这样......

1 个答案:

答案 0 :(得分:1)

将StoreA导入StoreB,您应该能够引用令牌:

import StoreA from 'path/to/StoreA.js';
// or if you're not using es6 imports:
// const StoreA = require('path/to/StoreA.js');

class StoreB {
  constructor() {
    dispatcher.register((action) => {
      switch(action.type) {
        case 'ACTION1':
          dispatcher.waitFor([StoreA.dispatchToken]);
          break;
        }
    });
  }
}

export default new StoreB();