我正在使用来自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();
我是反应和通量架构的新手,答案可能是显而易见的,如果是的话,对不起,但是如果把所有的时间都投入到寻找答案的失败中,那么我打赌这样......
答案 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();