@kirill-93

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

Где-то в документации было сказано, что вложенным свойствам объекта нельзя напрямую присваивать значения, так как vue не сможет отследить их изменение.
Например нельзя делать так:
product.info.name = 'New value';
Вместо этого нужно использовать Vue.set:
Vue.set(product.info, 'name', 'New value');
У меня же почему-то работает первый вариант.
Как правильно?
  • Вопрос задан
  • 215 просмотров
Решения вопроса 2
delphinpro
@delphinpro
frontend developer
При создании экземпляра Vue пробегается по всем имеющимся свойствам на всю глубину и присобачивает к ним геттеры и сеттеры, которые запускают внутренние механизмы реакции на изменение свойтсв, делая их реактивными.
Когда вы просто добавляете новое свойство, никаких геттеров/сеттеров к нему автоматически не навешивается, и Vue не может отслеживать изменения.
Именно поэтому для добавления новых свойств необходимо использовать метод Vue.set(), который при создании через defineProperty проинициализирует все внутренние механизмы реактивности.
Ответ написан
Комментировать
@nvdfxx
Senior Pomidor developer
Вроде как, там сказано, что нельзя делать так
data() {
    return {
        a: {
            b: 5
        }
    }
},
methods: {
    method1() {
        this.a.c = 6 // нильзя
        this.a.b = 6 // можна
    }
}

Нельзя создавать новые вложенные значения таким способом, про менять уже существующие ничего не сказано
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы