Вопрос проверяет знание жизненного цикла Vue и умение правильно освобождать ресурсы.
Отписываться от событий следует перед уничтожением компонента. В Vue для этого используются хуки beforeUnmount и unmounted. В Vue 2 аналогами являются beforeDestroy и destroyed. Это гарантирует, что компонент больше не будет реагировать на внешние события. Такой подход предотвращает ошибки и утечки памяти.
Правильный момент для очистки ресурсов — этап уничтожения компонента.
beforeUnmount
Компонент ещё существует
Есть доступ к состоянию и методам
Рекомендуемый хук для очистки
unmounted
Компонент уже удалён из DOM
Используется реже
Для Vue 2:
beforeDestroy
destroyed
mounted() {
window.addEventListener('resize', this.onResize);
},
beforeUnmount() {
window.removeEventListener('resize', this.onResize);
}
При использовании keep-alive:
beforeUnmount не вызывается
очистку логики переносят в deactivated
Подписки и события следует очищать в хуках уничтожения компонента, чтобы избежать утечек памяти и некорректного поведения.