All functions decorated with @Mutation are converted into Vuex mutations For example, the following code -


import { Module, VuexModule, Mutation } from 'vuex-module-decorators'

export default class Vehicle extends VuexModule {
  wheels = 2

  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


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++


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