Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: lifecycle, hook

В каких хуках жизненного цикла следует отписываться от событий?

Вопрос проверяет знание жизненного цикла Vue и умение правильно освобождать ресурсы.

Короткий ответ

Отписываться от событий следует перед уничтожением компонента. В Vue для этого используются хуки beforeUnmount и unmounted. В Vue 2 аналогами являются beforeDestroy и destroyed. Это гарантирует, что компонент больше не будет реагировать на внешние события. Такой подход предотвращает ошибки и утечки памяти.

Длинный ответ

Правильный момент для очистки ресурсов — этап уничтожения компонента.

Основные хуки для отписки

  1. beforeUnmount

    • Компонент ещё существует

    • Есть доступ к состоянию и методам

    • Рекомендуемый хук для очистки

  2. unmounted

    • Компонент уже удалён из DOM

    • Используется реже

Для Vue 2:

  • beforeDestroy

  • destroyed

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

mounted() {
  window.addEventListener('resize', this.onResize);
},
beforeUnmount() {
  window.removeEventListener('resize', this.onResize);
}

Особые случаи

При использовании keep-alive:

  • beforeUnmount не вызывается

  • очистку логики переносят в deactivated

Вывод

Подписки и события следует очищать в хуках уничтожения компонента, чтобы избежать утечек памяти и некорректного поведения.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#lifecycle

#hook

Подпишись на React Developer в телеграм