vuex 中關於 mapMutations 的作用


  mapMutations 工具函數會將 store 中的 commit 方法映射到組件的 methods 中。和 mapActions 的功能幾乎一樣,我們來直接看它的實現:

export function mapMutations (mutations) {
	const res = {}
	normalizeMap(mutations).forEach(({ key, val }) => {
		res[key] = function mappedMutation (...args) {
			return this.$store.commit.apply(this.$store, [val].concat(args))
		}
	})
	return res
}

  函數的實現幾乎也和 mapActions 一樣,唯一差別就是映射的是 store 的 commit 方法。為了更直觀地理解,我們來看一個簡單的例子:

import { mapMutations } from 'vuex'
export default {
	// ...
	methods: {
		...mapMutations([
			'increment' // 映射 this.increment() 到 this.$store.commit('increment')
		]),
		...mapMutations({
			add: 'increment' // 映射 this.add() 到 this.$store.commit('increment')
		})
	}
}

  經過 mapMutations 函數調用后的結果,如下所示:

import { mapActions } from 'vuex'
export default {
	// ...
	methods: {
		increment(...args) {
			return this.$store.commit.apply(this.$store, ['increment'].concat(args))
		}
		add(...args) {
			return this.$store.commit.apply(this.$store, ['increment'].concat(args))
		}
	}
}

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM