使用基于类的方法时,如何将商店操作映射到组件?

时间:2019-06-17 12:15:35

标签: vue.js vuex vue-class-components

这是我的vuejs组件,我正在使用基于类的方法。

<template>
    //template body here
</template>

<script>
import Vue from "vue";
import moment from "moment";
import Component from "vue-class-component";
import { State, Action, Mutation, namespace } from "vuex-class";

const homeModule = namespace("../store/modules/list");  //path is OK

export default class List extends Vue {
    @State(state => state.list.apps) items;     //working properly
    @homeModule.Action("fetchItems") fetchItems;    //not working

    mounted() {
        this.fetchItems();
    }

}
</script>

这是我的store/modules/list.js

const state = {
    items: []
};

const mutations = {
    setItems(state, items) {
        state.items = items;
    }
};

const actions = {
    async fetchItems({ commit }) {
        const {data} = //Make a request for fetching the items
        commit('setItems', items);
    }
};

export default {
    namespaced: true,
    state,
    actions,
    mutations
};

现在,我可以从商店中获取物品清单了。但是无法将动作与组件映射。 它显示错误[vuex] module namespace not found in mapActions(): ../store/modules/list/

任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

如果仍然有问题,则说明您在传递错误的路径

const homeModule = namespace("../store/modules/list");

应该是命名空间存储区中的路径,而不是文件的路径,因此应该像这样:

const homeModule = namespace("list");

如果您的模块是使用list键注册的