Я использую помощник mapGetters
из VueX, но у меня есть некоторые проблемы только при первой загрузке страницы, это не реагирует ...
Позвольте мне показать вам:
мой HTML-шаблон, вызывающий изменение:
<input type="number" value="this.inputValue" @change="this.$store.dispatch('setInputValue', $event.target.value)">
мой магазин получает значение
{
state: {
appValues: {
inputValue: null
},
},
getters: {
getInputValue: (state) => {
return state.appValues.inputValue;
},
},
mutations: {
setInputValue(state, value) {
state.appValues.inputValue = value;
},
},
actions: {
setInputValue(context, payload) {
return new Promise((resolve, reject) => {
context.commit('setInputValue', payload);
resolve();
});
},
}
}
а потом мой компонент слушает магазин:
import {mapGetters} from 'vuex';
computed: {
...mapGetters({
inputValue: 'getInputValue',
}),
}
watch: {
inputValue: {
deep: true,
immediate: true,
handler(nVal, oVal) {
console.log("inputValue", nVal, oVal);
}
},
}
Итак, теперь, когда я впервые загружаю страницу, я получаю этот console.log "inputValue" null undefined
, что совершенно нормально, потому что, поскольку у меня ничего нет в моем магазине, оно дает мне значение по умолчанию null .
Но теперь это странная часть. Я начинаю изменять входное значение, и у меня ничего не появляется в моей консоли. Ничто не движется ...
Затем я перезагружаю страницу и при загрузке я получаю этот console.log "inputValue" 5 undefined
(5 - это значение, которое я ввел ранее), так что, как вы можете видеть, когда я ранее менял ввод, он хорошо сохранял значение в магазине, но вычисленное значение не обновлялось само по себе ...
Теперь, когда я изменяю значение ввода, у меня есть журнал консоли, например, "inputValue" 7 5
, поэтому он работает так, как я хотел бы, чтобы он работал с самого начала ...
Что я делаю не так? Почему при первой загрузке вычисленное значение не является реактивным?
Спасибо за ваши ответы ...