Почему нужно отписываться от обработчика событий в JavaScript

Ответ

Отписка от обработчиков событий предотвращает утечки памяти и неожиданное поведение, особенно в SPA. Если элемент удаляется из DOM, но обработчик остаётся подписанным, сборщик мусора не сможет его удалить, так как ссылка на элемент сохраняется в обработчике. Также могут срабатывать обработчики у удалённых элементов.

Пример с отпиской:

const button = document.getElementById('btn');
const handleClick = () => console.log('Clicked!');

button.addEventListener('click', handleClick);

// Позже, когда кнопка больше не нужна
button.removeEventListener('click', handleClick);

В React используйте useEffect с функцией очистки:

useEffect(() => {
  const handleResize = () => console.log('Resized');
  window.addEventListener('resize', handleResize);

  return () => window.removeEventListener('resize', handleResize);
}, []);