Vuex代码分离

随着功能的增加,state、getters、mutations、actions 中的代码会越来越多,为了方便后期管理,可以进行代码分离。

在 store 文件夹下新建 state.js,代码如下。

export default {
    num: 10
}

index.js 代码如下。

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

// 1. 引用刚才创建的 state 模块
import state from './state';

const store = new Vuex.Store({
  // 2. state 的属性值就是引入模块的名称
  state: state,
  getters: {
    newnum(state) {
      return state.num + '元';
    }
  },
  mutations: {
    getAdd(state, data) {
      state.num++;
      console.log(data);
    }
  },
  actions: {
    getAddActions({ commit }, data) { // 使用了解构赋值
      setTimeout(() => {
        commit('getAdd', data);
      }, 1000);
    }
  }
});

export default store;

代码解析如下。

上述代码中的 state 属性名和属性值相同,根据 es6 语法,state: state 可以简写成 state,代码如下。

const store = new Vuex.Store({
  state, // 简写形式,等同于 state: state
  getters: {
    newnum(state) {
      return state.num + '元';
    }
  }
});

getters、mutations、actions 的分离方式和 state 相同,详情可观看视频讲解。