Внутри приложения React architected React я извлекаю данные из хранилища и хотел бы создать действие, чтобы запросить эту информацию, если она не существует. Однако я столкнулся с ошибкой, когда диспетчер уже отправляет сообщения.
Мой желаемый код выглядит примерно так:
getAll: function(options) {
options = options || {};
var key = JSON.stringify(options);
var ratings = _data.ratings[key];
if (!ratings) {
RatingActions.fetchAll(options);
}
return ratings || [];
}
Однако прерывисто терпит неудачу, когда диспетчер уже отправляет действие, с сообщением Invariant Violation: Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.
. Я часто делаю запросы в ответ на изменение состояния приложения (например, диапазон дат). Мой компонент, где я делаю запрос, в ответ на событие изменения из AppStore
имеет следующее:
getStateFromStores: function() {
var dateOptions = {
startDate: AppStore.getStartISOString(),
endDate: AppStore.getEndISOString()
};
return {
ratings: RatingStore.getAll(dateOptions),
};
},
Я знаю, что цепочка событий - это антипроцессор Flux, но я не уверен, какая архитектура лучше для получения данных, когда она еще не существует. В настоящее время я использую этот ужасный взлом:
getAll: function(options) {
options = options || {};
var key = JSON.stringify(options);
var ratings = _data.ratings[key];
if (!ratings) {
setTimeout(function() {
if (!RatingActions.dispatcher.isDispatching()) {
RatingActions.fetchAll(options);
}
}, 0);
}
return ratings || [];
},
Что было бы лучшей архитектурой, позволяющей избегать цепочек событий или ошибки диспетчера? Это действительно цепочка событий? Я просто хочу изменить данные на основе параметров, которые приложение установило.
Спасибо!