由于store对象通常只有一个,当数据很多都需要放到store对象,会显得store特别臃肿,因此引入了modules属性帮助我们将store对象进行模块划分

vue-vuex-modules的基本使用_ajax

 

   当我们在modules中的定义module的时候,最终是会被加入到根的state里面的,即模块会被作为根state的一个变量,在取module里的state是这样取的:

    <h1>{{$store.state.moduleA.name}}</h1>

  如果在modules定义了mutations,调用的时候还是和之前一样,如下:

this.$store.commit('increstu',stu)

  不过要注意的是:他会首先去根的mutation去找,接着才去modules,并且不要重名

  接着是modules中的getters,获取他的时候和之前的还是一样,如下:

<h2>{{$store.getters.increhun}}</h2>

  不过不同的是increhun方法可以有多了几个参数,比如:

    increhun(state,getters,rootState){ //rootState可以拿到根的state
      return state.counter+100
    }

  最后是modules中的actions了,调用还是和之前一样。但不同的是actions中参数context表示的不再是store对象了,并且在commit的时候只能提交给本模块的mutations

  actions: {
    toAjax(context){
      context.commit('incre')
    }
  }