Проверяет понимание механизма очистки эффектов в React и последствий её отсутствия при работе с setInterval.
Функция очистки (cleanup function) — это функция, которую вы возвращаете из колбэка useEffect. React вызывает её при размонтировании компонента или перед повторным запуском эффекта при изменении зависимостей. Это позволяет отменить подписки, таймеры, запросы или другие побочные эффекты, чтобы избежать утечек памяти и некорректного поведения.
Если вы используете setInterval внутри useEffect без возврата функции очистки, интервал продолжит выполняться даже после того, как компонент будет удалён из DOM. Это приводит к:
import { useEffect, useState } from 'react';
function Timer() {
const [count, setCount] = useState(0);
useEffect(() => {
const id = setInterval(() => {
setCount(prev => prev + 1);
}, 1000);
// Функция очистки
return () => {
clearInterval(id);
};
}, []);
return <div>{count}</div>;
}В этом примере интервал создаётся один раз (пустой массив зависимостей) и очищается при размонтировании компонента. Без return с clearInterval интервал будет работать вечно, даже если компонент скрыт.
Функция очистки в useEffect обязательна для любых долгоживущих побочных эффектов, таких как таймеры, подписки или слушатели событий. Она предотвращает утечки памяти и гарантирует корректное управление ресурсами в React-приложениях.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию