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

Muation functions MUST NOT be async functions. Also do not define them as arrow ➡️ functions, since we need to rebind them at runtime.