Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: reactivity, vue, set

Как корректно добавлять новые реактивные свойства в объект во Vue?

Вопрос проверяет знание механизмов реактивности Vue и способов корректного расширения объектов после инициализации.

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

Во Vue нельзя просто добавить новое свойство в объект и ожидать реактивности. Для этого используются специальные API. В Vue 2 применяется Vue.set или this.$set. В Vue 3 проблема решена за счёт Proxy, и новые свойства становятся реактивными автоматически. Выбор подхода зависит от версии Vue.

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

Корректное добавление новых реактивных свойств зависит от того, какая версия Vue используется в проекте.

Vue 2 и ограничения реактивности

В Vue 2 реактивность построена на Object.defineProperty.

Особенности:

  • Реактивными становятся только существующие свойства

  • Новые свойства не отслеживаются автоматически

  • Требуется явное уведомление системы реактивности

Использование Vue.set

Для добавления реактивного свойства применяется специальный метод.

this.$set(this.user, 'age', 30);
// или
Vue.set(this.user, 'age', 30);

В этом случае:

  • Свойство становится реактивным

  • Обновляется шаблон

  • Корректно срабатывают watch и computed

Vue 3 и Proxy

В Vue 3 реактивность основана на Proxy.

Преимущества:

  • Новые свойства отслеживаются автоматически

  • Нет необходимости в специальных методах

  • Поведение ближе к нативному JavaScript

Пример:

this.user.age = 30; // реактивно

Практические рекомендации

  1. Инициализировать все свойства заранее, если это возможно

  2. Использовать Vue.set в Vue 2

  3. Учитывать версию Vue при проектировании состояния

Вывод

Для корректной реактивности новые свойства должны добавляться через специальные механизмы Vue 2 или автоматически отслеживаются в Vue 3 благодаря Proxy.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

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

#reactivity

#vue

#set

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