# Mutations
All functions decorated with @Mutation
are converted into Vuex mutations
For example, the following code -
import { Module, VuexModule, Mutation } from 'vuex-module-decorators'
@Module
export default class Vehicle extends VuexModule {
wheels = 2
@Mutation
puncture(n: number) {
this.wheels = this.wheels - n
}
}
is equivalent of this -
export default {
state: {
wheels: 2
},
mutations: {
puncture: (state, payload) => {
state.wheels = state.wheels - payload
}
}
}
NOTE
Once decorated with the @Mutation
decorator Mutations are run with this (context) set to the state
So when you want to change things in the state,
state.item++
is simply this.item++
🚨 WARNING
Mutation functions MUST NOT be async functions. Also do not define them as arrow ➡️ functions, since we need to rebind them at runtime.