Поведение Vuex store.watch - PullRequest
       29

Поведение Vuex store.watch

0 голосов
/ 29 марта 2019

Я нуб Vuejs, и я немного застрял с функцией часов магазина Vuex. Вот мой код для магазина:

const storeconf: StoreOptions<any> = {
state: {
    string: 'teststring'
},
actions:{
    changeString({commit}):any{
        commit('stringChange');
    }
},
mutations:{
    stringChange(state){
        state.string=Math.random()+' root';
    }
},
modules: {
    mod:{
        namespaced:true,
        state:{
            string:'modulestring'
        },
        actions:{
            changeString({commit}):any{
                commit('stringChange');
            }
        },
        mutations:{
            stringChange(state){
                state.string=Math.random()+' module';
            }
        },
    }
}

.. и приложение:

new Vue({
el: '#app',
store: store,
template:'<button @click="doActions">click</button>',
mounted(){
    this.$store.watch(
            state =>[state.string, state.mod.string],
            watched => console.log(watched[0]+' -- '+watched[1]);
        );
},
methods:{
    doActions:function(){

        this.$store.dispatch('mod/changeString')
        this.$store.dispatch('changeString');

    }
}

Дело в том, что когда я запускаю действие в корневом хранилище, наблюдатель работает отлично, но когда я запускаю модуль пространства имен один (mod / changeString), наблюдатель вообще ничего не делает.

Что странно для меня, так это то, что действие в пространстве имен правильно меняет значение хранилища, оно просто не вызовет наблюдателя ..

Что я делаю не так?

1 Ответ

0 голосов
/ 01 апреля 2019

спасибо это действительно так.Реальный проект, из которого я извлек этот пример, написан на машинописном тексте, после этого урока , и, похоже, проблема в том, что свойство модуля было установлено как необязательное и не инициализировано.Он все еще регистрировал мутацию и изменял состояние, но не вызывал никаких часов.Какая-то странная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...