Vue中store简单用法

448 阅读1分钟

Vue中store用法

1. 声明一个store的index.js文件

1648362173357.png

import Vue from 'vue';
import Vuex from 'vuex';
import sectionTemple from './modules/sectionTemple.js';
import docTemple from './modules/docTemple.js';

Vue.use(Vuex);

const store = new Vuex.Store({
  modules: {
    sectionTemple,
    docTemple,
  },
});

export default store;

每一个模块配置一个js,全部引入到store下的js中,模块中的全局方法js放入modules下。

以docTemple.js为例:

const docTempleModule = {
  namespaced: true,
  state: {
    // 当前选中的模板ID
    temId: null,
    // 当前选中的模板版本ID
    temVersionId: null,
    // 当前选中的段落ID
    sectionId: null,
  },
  mutations: {
    setTemId(state, payload) {
      state.temId = payload;
    },
    setTemVersionId(state, payload) {
      state.temVersionId = payload;
    },
    setSectionId(state, payload) {
      state.sectionId = payload;
    },
  },
};

export default docTempleModule;

state中设置状态属性

mutations中set方法

2. 组件中引入

2.1 给全局变量设值

import { mapMutations } from 'vuex';


methods: {
    ...mapMutations('docTemple', [
      'setTemId',
      'setTemVersionId',
      'setClickTarget',
      'setDocInfo',
      'setShowMakingCom',
      'setElements',
      'setCurrentSectionList',
    ]),
    nodeClick(){
      this.setTemVersionId(data.temVersionId);
    }
}

2.2 从全局变量中取值

import { mapState } from 'vuex';

computed: {
    ...mapState('docTemple', ['temVersionId', 'docInfo', 'currentSelectEleInfo', 'temId']),
},

methods:{
  queryLis(){
    console.log('id:', this.temId);
  }
}