如何等待另一家商店在一家商店发生的发货

How to wait for a dispatch happening in one store from another store

我正在使用 Facebook 的 Flux、react、ES6。

我在使用那些单身商店时遇到了不同的问题。但是,经常出现的是以下内容。我从一个组件发送一个动作,并且我有两个商店(StoreA、StoreB)正在监听该动作。

我的两个商店位于两个不同的文件中,在每个文件中,我都导出了单例商店实例。这两个商店都已经导入到它们的相关容器中(一个 React 组件视图)。我希望 StoreA 等待 StoreB 完成当前调度的处理,然后再在 StoreA 中启动进程。

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

换句话说:

ReactComp.js

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

StoreA.js

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

export default new StoreA();

StoreB.js

class StoreB {
    constructor() {
        dispatcher.register((action) => {
            switch(action.type) {
                case 'ACTION1':
                    dispatcher.waitFor([storeADispatchToken]); //how to get the dispatchToken from Store A... 
                    break;
            }
        });
    }
}

export default new StoreB();

我是 React 和 Flux 体系结构的新手,答案可能很明显,如果是的话,我很抱歉,但是由于所有时间都在寻找答案但没有成功,我打赌 SO..

将 Store 导入 Store,您应该可以引用令牌:

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();