Как реализовать универсальный модуль Vuex? - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь структурировать свои модули Vuex, используя vuex-module-decorators , но, как я вижу, я повторяю одни и те же действия / мутации все время. Это выглядит так:

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?

...