如何等待另一家商店在一家商店发生的发货
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();
我正在使用 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();