Назад к вопросам
Middle
71
questionbank
Какие инструменты и подходы можно использовать в хуке useEffect?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
- Инструменты:
- Функции очистки (cleanup functions) для отписки от подписок, отмены таймеров и т.д.
- Зависимости (dependencies array) для управления повторным выполнением эффекта.
- Refs для доступа к DOM-элементам или сохранения изменяемых значений без вызова ререндера.
- Custom hooks для организации сложной логики эффектов.
- Подходы:
- Использование нескольких
useEffectдля разделения логики. - Условное выполнение эффектов.
- Использование
useCallbackиuseMemoдля предотвращения лишних ререндеров функций и значений, используемых в зависимостях. - Обработка асинхронных операций с помощью
async/awaitвнутри функции эффекта (создавая вспомогательную асинхронную функцию).
- Использование нескольких
useEffect(() => {
// Эффект: подписка на событие
const handleResize = () => {
console.log('Окно изменено');
};
window.addEventListener('resize', handleResize);
// Очистка: отписка от события при размонтировании или изменении зависимостей
return () => {
window.removeEventListener('resize', handleResize);
};
}, []); // Пустой массив зависимостей: эффект выполняется один раз при монтировании
useEffect(() => {
// Эффект: загрузка данных
async function fetchData() {
const response = await fetch(`/api/data?id=${userId}`);
const data = await response.json();
setData(data);
}
fetchData();
}, [userId]); // Зависимость: эффект выполняется при изменении userId и при монтировании