美文网首页
vuex的modules简单使用

vuex的modules简单使用

作者: 聆听璇律 | 来源:发表于2019-01-29 16:38 被阅读9次

    1.module是干啥的

    背景:在Vue中State使用是单一状态树结构,应该的所有的状态都放在state里面,如果项目比较复杂,那state是一个很大的对象,store对象也将对变得非常大,难于管理。
    module:可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。

    2.module的结构

    const moduleA = {
     state: { ... },
     mutations: { ... },
     actions: { ... },
     getters: { ... }
     }
    

    使用module和不使用module对比:

    //不使用module
    export default new Vuex.Store({
       state:{
                params1:'',
                params2:'',
                params3:'',
                params4:'',
                params5:'',
                .....
                //如果项目大会有很多很多个
    }
    });
    
    //使用module
    export default new Vuex.Store({
        modules: {
            moduleA,
            moduleB,
        }
    });
    
    //module通过import引入进来
    moduleA={
        state:{
                 params1:'',
                params2:'',
       }
    
    moduleB={
        state:{
                 params3:'',
                params4:'',
       }
    
    }
    

    通过对比就可以发现如果我们不使用module,store里面一旦state值够多,就会是store结构变得很复杂,而使用module可以使store结构简单明了。

    3.module具体使用

    3.1创建store,把module引入进来,这里以loginModule为例
    ps:注意main.js引入store,加入vue根里面

    new Vue({
        el: '#app',
        store,
        router,
        render: h => h(App),
    }).$mount('#app');
    
    import Vuex from 'vuex';
    import LoginModule from './modules/LoginModule'
    import Vue from 'vue'
    Vue.use(Vuex);
    
    export default new Vuex.Store({
        modules: {
            LoginModule
        }
    });
    

    3.2创建module
    在module里面加入了action 和 mutations,store通过dispatch action 来改变state的值

    const actions = {
        saveSessionId({commit},payload) {
            commit('saveSessionId',payload)
        }
    };
    
    const state = {
        sessionId: ''
    };
    
    const mutations = {
        saveSessionId(state, payload) {
            state.sessionId = payload;
        }
    };
    
    export default {
        actions,
        state,
        mutations
    }
    

    3.3在vue界面调用store修改值

    this.$store.dispatch('saveSessionId', '12345678');
    

    相关文章

      网友评论

          本文标题:vuex的modules简单使用

          本文链接:https://www.haomeiwen.com/subject/slbxsqtx.html