Vuex.Store 模块拆分成多个子模块

主 store 文件 引用 多个模块 每个模块下边有多个 module 文件

引用顺序:

     main.js

        → store/index.js

               → test1/index.js

                       → test1-1.module.js

                       → test1-2.module.js

               → test2/index.js

                       → test2-1.module.js

                       → test2-2.module.js

main.js 引用

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./core/services/store";

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");

引用子模块

编辑子模块 test

test.module.js 的内容 (我用的是异步的)

import ApiService from "@/core/services/api.service";
// path
const REQ_ITEM = "test";

// action types
export const GET_ITEM = "getTest";

// mutation types
export const SET_ITEM = "setTest";
export const SET_ERROR = "setError";

export default {
  state: {
    errors: null,
    item: {}
  },
  getters: {
    [GET_ITEM]: state => state.item
  },
  actions: {
    [GET_ITEM](context) {
      return new Promise(resolve => {
        ApiService.get(`${REQ_ITEM}`)
          .then(({ data }) => {
            context.commit(SET_ITEM, data.data);
            resolve(data);
          })
          .catch(({ response }) => {
            context.commit(SET_ERROR, response.data);
          });
      });
    }
  },
  mutations: {
    [SET_ITEM](state, data) {
      state.item = data || {};
    },
    [SET_ERROR](state, data) {
      state.errors = data.msg;
    }
  }
};

感觉整个项目清爽很多

引用

import { mapGetters, mapActions } from "vuex";
import { GET_ITEM } from "@/core/services/test/test.module";

export default {
  data() {
    return {
      test: "测试数据测试数据测试数据测试数据",
      error: ""
    };
  },
  computed: {
    ...mapGetters({
      item: GET_ITEM
    })
  },
  mounted() {
    this.getItem();
    // 返回的值
    console.log(this.item);
  },
  methods: {
    ...mapActions({
      getItem: GET_ITEM
    })
  }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li.siyuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值