Как выполнить функцию после завершения изменения хука состояния?
Когда мы вызываем setState в классе, то можем передать колбек в последний аргумент, и колбек выполнится сразу после завершения изменения.
this.setState({}, () => { выполнится по завершении изменения })
Пример кода:
const foo = () => {
setOpen(false);
bar(); // эта функция должна быть выполнена сразу после setOpen, но setOpen - асинхронная функция
}
Вопрос: Как выполнить bar() сразу после завершения обновления хука через setOpen именно с аргументом false?
Ответы (1 шт):
Автор решения: santavital
→ Ссылка
Асинхронная функция возвращает Promise, чтобы выполнить что-либо сразу после выполнения promise нужно воспользоваться следующей конструкцией:
setOpen(false)
.then(
result => {
// первая функция-обработчик - запустится при успешном завершении (resolve)
// alert("setOpen resolve() return " + result);
bar();
},
error => {
// вторая функция - запустится при ошибке (reject)
// alert("setOpen reject() return " + error); // error - аргумент reject
}
);