1. 程式人生 > 其它 >Vuex核心概念之Mutations

Vuex核心概念之Mutations

1. 有了 state 以及 getters 的基礎,mutations 實際上也很容易理解,詳解可以直接看官方文件,個人只總結一下重要知識點:

【1】改變 state 不能直接獲取去改變,應該通過 mutations,只有這樣才能夠記錄狀態的變化

【2】mutations 只能執行同步操作,不可以執行非同步操作,否則無法記錄非同步操作對狀態的改變,非同步操作需要 actions

【3】mutations 可以考慮使用 常量 去代替 mutation 事件型別

【4】在使用 mutations 時,不是類似方法那樣直接呼叫,而是通過 this.$store.commit('xxx')

【5】mutations 的 payload 負荷【實際上就是額外引數】:用法直接貼程式碼:

mutations: {
  increment (state, payload) {
    state.count += payload.amount
  }
}

兩種風格寫法:

store.commit('increment', {
  amount: 10
})

以及

store.commit({
  type: 'increment',
  amount: 10
})

【6】在元件中使用 mutations:【轉自官方文件 :https://vuex.vuejs.org/zh/guide/mutations.html】

import { mapMutations } from 'vuex'

export 
default { // ... methods: { ...mapMutations([ 'increment', // 將 `this.increment()` 對映為 `this.$store.commit('increment')` // `mapMutations` 也支援載荷: 'incrementBy' // 將 `this.incrementBy(amount)` 對映為 `this.$store.commit('incrementBy', amount)` ]), ...mapMutations({ add:
'increment' // 將 `this.add()` 對映為 `this.$store.commit('increment')` }) } }