Vuex中的modules

967 阅读2分钟

Vuex

四大核心模块:

  • state: 翻译:状态,state其实是数据状态管理对象,在这里你可以初始化一些你想要的数据。
  • getter: 翻译: 获得者,getter是对state的数据对象的读取,getters从表面是获得的意思,可以把他看作在获取数据之前进行的一种再编辑,相当于对数据的一个过滤和加工。getters就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算
  • Actions:翻译:行动,Actions里面我们可以定义我们想执行异步的方法,在这里它并不会立即去执行,而是在页面中去dispatch这个方法,提交mutations,而不是直接去改变状态,在页面中有两种方式去做派发,第一种  this.$store.dispatch('xxx') 第二种 可以使用mapActions 辅助函数将组件的 methods 映射为 store.dispatch 调用(Demo中有体现)
  • mutations:翻译: 突变,mutations里面可写很多的改变状态的方法,也就是像翻译一样,可以改变state里面的数据,试讲state的里面数据发生改变的唯一方式。

实战例子:

1.searchValueStore.js

export default {
    state: {
        searchValue:{},//查询条件数据
        listPageNum:1
    },
    getters:{},
    mutations:{
        setSearchValue(state,options){
            state.searchValue = JSON.parse(JSON.stringify(options));
        },
        setListPageNum (state, option) {
            state.listPageNum = option;
        }
    },
    actions: {},
    moudles: {}
}

2.inidex.js

import Vue from 'vue';
import Vuex from 'vuex';
import actions from './actions.js';
import mutations from './mutations.js';
import searchValueStore from './module/searchValueStore';//备授课记录查询条件
Vue.use(Vuex);
// 这里为全局的,模块内的请在模块内动态注册
const store = new Vuex.Store({
    strict: true,
    state: {
        dataJump:false,
        currentTheme:'',//当前主题
        curSystemMenu: null,//菜单
        userInfo: {//用户信息
            userId: "",//ID 
        },
        userInfoUserId:''
    },
    getters: {
    },
    mutations,
    actions,
    modules:{
        searchValueStore
    }
});
export default store;

3.组件内使用

computed :{
    ...mapState({
        searchValue: state => state.searchValueStore.searchValue,
        listPageNum: state => state.searchValueStore.listPageNum
    }),    
}

参考:

用一个简单的例子弄懂vuex和模块化

如何更好的使用module vuex?