Vuex模块的Mutations

16

我需要调用 Vuex 模块,但它不起作用。我已经看过文档,但仍然不起作用。希望有人能够帮助我。

const stateLocations ={

    state: {

        provinces: {},
        cities: {}
    },
    mutations: {
        provinces(state, payload){

            state.provinces = payload
        }
    }
}


const store = new Vuex.Store({

    modules: {
        locations: stateLocations
    }


})

我的代码来调用mutations

created(){

            var store = this.$store

            axios.get('api/provinces')
                .then( function(response){

                    store.state.locations.commit('provinces', response.data)
                })
                .catch()
        }

这个不起作用 store.state.locations.commit('provinces', response.data) TY


离题一下,但我应该指出,根据vuex文档,这种与外部API交互的方式是不正确的。这样的逻辑应该移动到vuex模块的“actions”部分。 - N. Kudryavtsev
1个回答

54

因为您没有在模块中启用namespaced,所以您只需要

this.$store.commit('provinces', response.data)

如果您想启用命名空间:

const stateLocations = {
  namespaced: true,
  state: {
    ...

然后你可以像这样提交mutation:

this.$store.commit('locations/provinces', response.data)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接