Проверяет понимание обработки ошибок в асинхронных операциях внутри хука useEffect в React.
Когда вы выполняете асинхронную операцию внутри useEffect, например, fetch запрос, и она завершается ошибкой, React не перехватывает эту ошибку автоматически. Это может привести к необработанному отклонению промиса (unhandled promise rejection), которое в строгих окружениях (например, в Node.js) может завершить процесс, а в браузере — просто вывести предупреждение в консоль. Компонент при этом не узнает об ошибке, и пользователь не увидит никакого уведомления.
Для корректной обработки используйте конструкцию try/catch внутри асинхронной функции, объявленной в useEffect. Обновляйте состояние компонента, чтобы отобразить ошибку пользователю. Также важно отменять запросы при размонтировании компонента, чтобы избежать обновления состояния после размонтирования (это вызывает предупреждение React).
useEffect(() => {
let cancelled = false;
async function fetchData() {
try {
const response = await fetch('/api/data');
if (!cancelled) {
setData(await response.json());
}
} catch (error) {
if (!cancelled) {
setError(error.message);
}
}
}
fetchData();
return () => { cancelled = true; };
}, []);Вывод: обработка ошибок в асинхронных операциях useEffect — обязательная практика для стабильных React-приложений. Она предотвращает необработанные промисы и позволяет корректно уведомлять пользователя о проблемах.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию