Ответ
Отписка от обработчиков событий предотвращает утечки памяти и неожиданное поведение, особенно в 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);
}, []);