如何实现通用Vuex模块?

时间:2019-10-09 20:22:29

标签: vue.js vuex store vuex-modules

我正在尝试使用 vuex-module-decorators 构建我的Vuex模块,但是正如我所看到的,我一直在重复相同的Actions / Mutations。 看起来像这样:

index.ts

Vue.use(Vuex);
export default new Vuex.Store({
    state: {},
    modules: {
        moduleA: ModuleA,
        moduleB: ModuleB
    }
});

moduleA.ts

@Module({ name: "moduleA", namespaced: true })
export default class ModuleA extends VuexModule {

    // States
    public modulesA: any = [];

    @Mutation
    public LOAD_MODULEA(modulesA: any) {
        this.modulesA = modulesA;
    }

    @Action
    public async get() {
        try {
            const res = await api.get("myroute1");
            this.context.commit("LOAD_MODULEA", res.data);
        } catch (error) {
            return
        }
    }

moduleB.ts

@Module({ name: "moduleB", namespaced: true })
export default class ModuleB extends VuexModule {

    // States
    public moduleB: any = [];

    @Mutation
    public LOAD_MODULEB(moduleB: any) {
        this.moduleB = moduleB;
    }

    @Action
    public async get() {
        try {
            const res = await api.get("myroute2");
            this.context.commit("LOAD_MODULEB", res.data);
        } catch (error) {
            return
        }
    }

可以创建一个创建通用 Action (get())的模块,以便可以在ModuleA和ModuleB中重用吗?

0 个答案:

没有答案