Вопрос проверяет понимание очистки побочных эффектов и предотвращения утечек памяти.
Cleanup-функция реализуется возвратом функции из useEffect. Эта функция вызывается перед повторным выполнением эффекта и при размонтировании компонента. Cleanup используется для очистки таймеров, подписок и слушателей событий. Это предотвращает утечки памяти и некорректное поведение.
Любой эффект, который что-то “подписывает” или создаёт ресурс, должен уметь его очищать.
Cleanup-функция — функция, возвращаемая из useEffect, предназначенная для очистки побочного эффекта.
useEffect(() => {
const handler = () => console.log("resize");
window.addEventListener("resize", handler);
return () => {
window.removeEventListener("resize", handler);
};
}, []);
useEffect(() => {
const id = setInterval(() => {
console.log("tick");
}, 1000);
return () => clearInterval(id);
}, []);
События (addEventListener).
Таймеры (setTimeout, setInterval).
Подписки (WebSocket, RxJS).
Сторонние библиотеки.
Cleanup-функция — обязательная часть корректного useEffect, если эффект создаёт долгоживущие ресурсы.