鍍金池/ 問(wèn)答/HTML/ vuex,如何調(diào)用modules里面定義的mutations

vuex,如何調(diào)用modules里面定義的mutations

狀態(tài)可以拿到,鼓搗了好久。不懂定義在模塊里面的mutations、getters、actions要怎么調(diào)用?

    const mA = {
      state : {
        a : 1,
        b : 1,
      },
      // 模塊的局部 mutations
      mutations : {
        add : state =>{
          state.a++
        },
      },
      getters : {
        double : state=> {
          return state.a *2
        }
      }
    }
    const mB = {
      state : {
        a : 2,
        b : 2,
      },
      // 模塊的局部 mutations
      mutations: {
        addB: state => {
          state.a++
        },
      },
      // 模塊的局部 actions
      actions : {
        asyncAdd : ({commit, rootState ,state}) =>{
          setTimeout(() => {
            commit('add');
          }, 1000);
        }
      }
    }
    const store = new Vuex.Store({
      modules : {
        a : mA,
        b : mB,
      }
    });
    console.log(store.state.a);
回答
編輯回答
扯不斷

一般state的狀態(tài) 要通過(guò)getter 以模塊的命名空間獲取

import { mapGetters } from 'vuex

// vue組件
computed:{
   ...mapGetters({
        a: 'a/a'
   })
}
2017年5月23日 05:11
編輯回答
舊言

模塊內(nèi)的的mutations、getters、actions是注冊(cè)在全局的,可以正常通過(guò)this.$store.dispacth('xxx')調(diào)用,只有模塊內(nèi)的state是模塊私有的,調(diào)用的時(shí)候需要加上模塊名,this.$store.state.a.a

2017年9月10日 02:29
編輯回答
不討喜

組件內(nèi)commit調(diào)用mutation里的方法,可以修改state里的變量。dispatch調(diào)用actions內(nèi)的,actions一般處理異步方法。vuex的文檔好好研讀一下,說(shuō)得還是挺清楚的,GitHub上也有很多demo的

2018年2月23日 01:36