1. 程式人生 > >vuex中的mutations、actions

vuex中的mutations、actions

const 獲取 知識 state 異步 -s 解構賦值 pat 屬性

//閱讀本文需要一點vuex的基本知識

commit => mutation //用來觸發同步操作的方法

dispatch=>action //用來觸發異步操作的方法

如果想改變vuex的store 中的狀態的唯一方法是提交(commit) mutation,如果想在action中改變store中的狀態,先要dispatch一個action,action中在commit一個mutation,在mutation中改變store中的值。

mutations

index.js

methods:{

  add(){

    this.$store.commit(‘increment‘,10)

  }

}

mutatons.js

mutations:{

  increment(state,n){

    state.count+=n;

  }

}

////////////////////////////////////////////////////////////////////////////

actions

/index.js

methods:{

  add(){

    this.$store.dispatch(‘increment‘,{num:1})

  }

}

/store/index.js

const app={

  state: {
    data:‘‘
  },

  actions:{

    increment({commit},count){

      commit(‘ADD_NUM‘,count.num)

    }

  },

  mutations:{

    ADD_NUM:(state,n)=>{

      state.data=n;

    }

  }

}

export default app

//////////////////////////////////////////////////////////////

文中{commit}

es6中函數的參數是一個對象,函數中用的是對象中的一個方法,是可以通過對象的解構賦值直接獲取到該方法的

因為actions中的函數中喲啊commit mutation,所以會獲取到一個默認的參數context,它是一個store的實例,通過它可以獲取到store的屬性和方法,如 context.state 獲取state屬性,context.commit執行commit命令。所以把

increment(context,count){

  context.commit(‘ADD_NUM‘,count.num)

}

簡寫成

increment({commit},count){

 commit(‘ADD_NUM‘,count.num)

}

如有不對的地方,請多多指教!      ——RLflash

vuex中的mutations、actions