vue.js - vuex:为什么从命名空间模块内调用突变需要前缀?

标签 vue.js vuex

我有以下 vuex 配置

import listing from '@/store/modules/listing'
var store = new Vuex.Store({
    modules:
    {
        listing: listing,

    },

列表模块代码如下所示

import Vue from 'vue'
const listing = {
    namespaced: true,
    state: {
        listingAllItems: [],
        listingSelectedItems: [],       
    },
    mutations: {
        updateListingAllItems(state, param) {
        },
    },
    actions: {
        getListingItems(context, param) {
            var tempThis = this;
            return new Promise((resolve, reject) => {
                var url = 'http://WS/';
                Vue.http.get(url).then(response => {
                    tempThis.commit('updateListingAllItems', response.data);
                }).catch(error => reject(error));
            })
        },
    },
    getters: {}
}

export default listing

调用 this.commit('updateListingAllItems', response.data) 时,我收到 [vuex] 未知突变类型:updateListingAllItems

vuex guide

Namespaced getters and actions will receive localized getters, dispatch and commit. In other words, you can use the module assets without writing prefix in the same module

为什么我会收到错误消息?

最佳答案

在操作方法内 this 是存储。您的代码在商店实例上提交了无前缀的突变。

如果你改变

tempThis.commit('updateListingAllItems', response.data);

context.commit('updateListingAllItems', response.data);

你会得到你所期望的。

关于vue.js - vuex:为什么从命名空间模块内调用突变需要前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46738473/

相关文章:

javascript - Vue.js 应用程序没有错误,但出现白页

javascript - 如何在 Vue 类组件中定义过滤器?

vue.js - 是否可以从浏览器更改 vuex 存储?

javascript - Vuex 未捕获的语法错误和标识符

unit-testing - vuejs中的单元测试

javascript - 如何使用 Vue.js 对 ajax 重复列表应用过滤器?

javascript - 使用 vuejs 从 nodejs 下载 zip 文件

javascript - 从 Vuex 更新数据在观察者中出现无限循环

vue.js - 状态更改时更新 getter 值 Vuex 存储

javascript - Vue + vuex 对象突变