Vuex中的Module

113 阅读1分钟

Vuex的五大核心之一modules

modules,可以让每一个模块拥有自己的statemutationactiongetters,使得结构非常清晰,方便管理;如果所有的状态或者方法都写在一个store里面,将会变得非常臃肿,难以维护。

使用流程

1.在手脚架中创建的store中新建一个文件夹,并创建js文件

1648203536.png

2.在store的index.js文件下引入自己创建的js文件

1648203761(1).png

做完这一步我们就可以在$store.state中看到我们创建的js文件了

3.内容编辑

js内容的编写按照官网的要求 state要使用箭头函数来表示

const state = ()=>({
    modaStr:'我是模块A的数据'
})
const getters = {
    strGetter:function(state){
        return state.modaStr+'getter'
    }
}
const mutations = {
    CHANGESTR:function(state,payload){
        state.modaStr = payload
    }
}
const actions = {
    waitStr({commit},data){
        setTimeout(() => {
            commit('CHANGESTR',data)
        }, 500);
       
    }
}

export default {
    /* 添加namespaced:true 是为了保证模块之间的数据独立运行,不互相影响 */
    namespaced:true,
    state:state,
    getters:getters,
    mutations:mutations,
    actions:actions
}
4.使用

我们希望通过方法去调用定义在modules分区的数据和方法同常规方式一样,不一样的是在方法前添加你引入的js文件名用 / 隔开

methods:{
    changeStr(){
      this.$store.commit('modB/CHANGESTR','111')
    },
    waitChange(){
      this.$store.dispatch('modB/waitStr','222')
    }
  }