Vuex核心概念之Mutations
阿新 • • 發佈:2021-09-22
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' exportdefault { // ... 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')` }) } }