Вопрос проверяет понимание реактивности Vue и ограничений отслеживания изменений в объектах.
Если добавить новое свойство в объект после его инициализации, Vue не сделает его реактивным автоматически. Такое свойство не будет отслеживаться системой реактивности. В результате изменения этого свойства не вызовут обновление шаблона. Это связано с тем, как Vue перехватывает доступ к свойствам. Для корректной работы нужно использовать специальные методы.
Реактивность во Vue основана на отслеживании свойств, которые существуют в момент инициализации компонента.
Во время создания компонента Vue:
Проходит по всем свойствам объекта
Делает их реактивными
Запоминает зависимости
Если свойство добавляется позже:
Vue не знает о его существовании
Геттеры и сеттеры для него не создаются
Изменения не отслеживаются
Пример проблемы:
data() {
return {
user: {
name: 'Alex'
}
};
}
// позже
this.user.age = 30; // не реактивно
Шаблон не обновляется
computed и watch не реагируют
Поведение может выглядеть как баг
Работа с формами
Динамическое расширение объектов
Обновление данных из API
Добавление новых свойств в объект после инициализации не делает их реактивными, поэтому такие изменения не приводят к обновлению интерфейса без специальных приёмов.