- Для начала извинения за неоднозначное название. Проблема, с которой я сталкиваюсь, я действительно смущен, как поставить заголовок. Я открыт для редактирования. В принципе, я использую response-redux, и у меня есть модальный, в котором я обновляю некоторое содержимое в базе данных. При обновлении я хочу, чтобы все состояние редуктора было по умолчанию и закрыло модальное. (Это прямо, поскольку я запускаю функцию при обновлении, которая устанавливает все значения по умолчанию) Однако при обновлении я хочу закрыть модальное и отобразить toastr при обновлении или сообщении об ошибке из ответа. Я создал компоненты и действия для тоста.Как асинхронно сбросить значения redux
Проблема заключается в том, что toastr не отображает сообщение, поскольку до того, как он может соответствовать постоянному действию из хранилища, редукторы для модального значения уже установлены по умолчанию. Какой был бы лучший подход к преодолению этого?
Modal.jsx
//update
updateConfig() {
this.props.updateConfigNode(node, latestConfigData); //update action
this.closeModal();
}
closeModal() {
this.props.status(false); //Close modal
this.props.update(''); //Set update action status 'updated or error' to ''
}
Toastr.jsx
componentDidUpdate() {
this.routerConfigNotification(this.props.config); //Getting from store
}
configNotify(config) {
const message = checkForRouterConfigUpdateState(config);
if(message) {
this._addNotificationNormal(message.title, message.type, message.text);
}
}
Utils
export function checkForRouterConfigUpdateState(routerConfig) {
let message = {};
let messageText;
switch (_.get(routerConfig, 'updateStatus')) {
case '_error':
messageText = 'An error has been occurred while updating configuration';
return message = {
mode: 'normal',
title: 'Error',
type: 'info',
status: _.get(routerConfig, 'updateStatus'),
text: messageText
};
case '_updated':
messageText = 'Successfully Updated';
return message = {
mode: 'normal',
title: 'Updated',
type: 'info',
status: _.get(routerConfig, 'updateStatus'),
text: messageText
};
}
}
Я пробовал другие lifec ycle, но самым близким к решению этой проблемы является использование функции setTimeout, которая, как я знаю, является взломом, и я уверен, что есть способ решить такие проблемы асинхронности. Спасибо заранее.
Умм, снято в темноте, но почему вы настаиваете на перепродаже модального состояния при обновлении? Просто перезагрузите его, пока он не откроется, и вы золотые, нет? – WTK
Пробовал это, но посмотрел, есть ли другой триггер действия между тостом для обновления, если модальный будет показывать, потому что я не установил состояние по умолчанию. Получите мою мысль? –
Thunk используется для асинхронных действий в redux. Вы заглянули в него? – andHapp