外观
Mutations
更改 Vuex 的 store 中的状态的唯一方法是提交 mutation
接受 state 作为第一个参数
js
const store = new Vuex.Store({
state: {
count: 1
},
mutations: {
increment (state) {
// 变更状态
state.count++
}
}
})
js
store.commit('increment')
提交载荷
可以向 store.commit 传入额外的参数,即 mutation 的 载荷(payload)
js
mutations: {
increment (state, payload) {
state.count += payload.amount
}
}
js
store.commit('increment', {
amount: 10
})
Mutation 必须是同步函数
mapMutations 辅助函数
js
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')`
})
}
}