Задать вопрос
@kirill-93

Как правильно присваивать значение свойству во vue?

Где-то в документации было сказано, что вложенным свойствам объекта нельзя напрямую присваивать значения, так как vue не сможет отследить их изменение.
Например нельзя делать так:
product.info.name = 'New value';
Вместо этого нужно использовать Vue.set:
Vue.set(product.info, 'name', 'New value');
У меня же почему-то работает первый вариант.
Как правильно?
  • Вопрос задан
  • 219 просмотров
Подписаться 2 Простой 2 комментария
Решение пользователя Сергей delphinpro К ответам на вопрос (2)
delphinpro
@delphinpro
frontend developer
При создании экземпляра Vue пробегается по всем имеющимся свойствам на всю глубину и присобачивает к ним геттеры и сеттеры, которые запускают внутренние механизмы реакции на изменение свойтсв, делая их реактивными.
Когда вы просто добавляете новое свойство, никаких геттеров/сеттеров к нему автоматически не навешивается, и Vue не может отслеживать изменения.
Именно поэтому для добавления новых свойств необходимо использовать метод Vue.set(), который при создании через defineProperty проинициализирует все внутренние механизмы реактивности.
Ответ написан
Комментировать