Я изо всех сил пытаюсь обойти ошибку Cannot dispatch in the middle of a dispatch
, которую мне бросает Flux, на простом примере.
На мой взгляд, у меня есть кнопка, которая запускает socialLogin(token)
действие на моем AuthActions
. С Alt на моем действии я generateActions('login');
Мой метод socialLogin
выполняет запрос Async 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()
не должен "разрешить" текущее отправляемое действие?
Как мне запустить здесь какое-то другое действие или даже запустить несколько действий (войти в систему, использовать другое внешнее действие и т. Д.).
Спасибо!