Vuex: странный вопрос о странном поведении vuex. Мне нужна как минимум одна мутация и фиксация, чтобы обновить или присвоить объектам моего магазина

«Это» - все о сфере видимости. Каждая функция имеет свою собственную область действия, и поскольку все в JS является объектом, даже функция может хранить некоторые значения в себе, используя «это». ООП 101 учит, что «это» применимо только к экземплярам объекта. Поэтому каждый раз, когда выполняет функция, новый «экземпляр» этой функции имеет новое значение «this».

Большинство людей путаются, когда пытаются использовать «это» внутри анонимных функций закрытия например:

(function(value) {
    this.value = value;
    $('.some-elements').each(function(elt){
        elt.innerHTML = this.value;        // uh oh!! possibly undefined
    });
})(2);

Итак, внутри each (), «this» не содержит «значение», которое вы ожидаете от него (от

this.value = value;
над ним). Итак, чтобы справиться с этой проблемой (без каламбуры), разработчик мог:

(function(value) {
    var self = this;            // small change
    self.value = value;
    $('.some-elements').each(function(elt){
        elt.innerHTML = self.value;        // phew!! == 2 
    });
})(2);

попробовать; вам понравится эта схема программирования

2
задан Ascol Parajuli 16 January 2019 в 11:19
поделиться

2 ответа

Если вы ожидаете увидеть изменение в инструментах разработчика Vue, вы не увидите никаких изменений состояния, если они не произошли в результате мутации или пока не будет вызвана другая мутация.

0
ответ дан Darren Lewis 16 January 2019 в 11:19
поделиться

Чтобы установить значение состояния в хранилище, мы должны взаимодействовать с Vuex api с помощью мутаций / коммитов.

Попытка установить состояние без мутации, это идет вразрез с дизайном Vuex (с управляемым хранилищем / состоянием)

Обычно попытка установить состояние без мутаций (скажем, внутри действия) приводит к ошибка, но я также считаю, что при получении состояния через '$ store.state' будет возвращено только состояние (и не будет возвращен экземпляр состояния)

Это сделано для поддержания неизменности во всем состоянии приложения [113 ]

0
ответ дан Denis Tsoi 16 January 2019 в 11:19
поделиться