【发布时间】:2016-02-20 07:38:33
【问题描述】:
我正在努力解决 Flux 向我抛出的 Cannot dispatch in the middle of a dispatch 错误,并举了一个基本示例。
在我看来,我的AuthActions 上有一个触发socialLogin(token) 操作的按钮。在我的操作中使用 Alt,我 generateActions('login');
我的socialLogin 方法执行一个异步 API 请求,该请求返回一个承诺(Api 是一个使用请求库的简单类):
// AuthActions
socialLogin(type, access_token) {
Api.request('get', 'auth/social', { type, access_token })
.then((payload) => {
if (payload.code !== 'OK') {
// Do something...
} else {
this.actions.login(payload.data.token);
}
})
.catch((response) => {
console.log('ERROR', response);
// Do something....
});
this.dispatch();
}
Store onLogin 方法目前什么都不做。
但是运行这个会抛出/捕获错误Uncaught (in promise) Error: Invariant Violation: Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.(…)。
我不明白为什么,在阅读了许多问题/文章后 - this.dispatch() 不应该“解决”当前正在调度的操作?
我将如何在此处触发其他操作,甚至触发多个操作(登录、使用其他外部操作等)。
谢谢!
【问题讨论】:
标签: javascript asynchronous flux reactjs-flux