【问题标题】:Vuex Modules MutationsVuex 模块突变
【发布时间】:2017-10-13 04:21:16
【问题描述】:

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

const stateLocations ={

    state: {

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

            state.provinces = payload
        }
    }
}


const store = new Vuex.Store({

    modules: {
        locations: stateLocations
    }


})

我调用突变的代码

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

【问题讨论】:

  • Offtop 但我应该注意,根据 vuex 文档,这种与外部 api 交谈的方式是不正确的。此类逻辑应移至 vuex 模块的 actions 部分。

标签: vue.js vuex


【解决方案1】:

因为你没有在模块中启用namespaced,你只需要

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

如果要启用命名空间:

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

然后你像这样提交突变:

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

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 2021-09-04
    • 2021-05-01
    • 2019-12-11
    • 2018-05-07
    • 2018-05-24
    • 2021-10-15
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多