Sobes.tech
Middle

Povedz mi o mutáciách vo Vuex.

sobes.tech AI

Odpoveď od AI

Mutácie v Vuex sú jediný spôsob, ako zmeniť stav úložiska. Sú synchronné a prijímajú stav (state) ako prvý argument. Druhým argumentom môže byť objekt payload.

Definujú sa v objekte mutations modulu alebo koreňového úložiska. Volajú sa pomocou metódy commit.

// Definícia mutácie
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++ // Zmena stavu
    },
    incrementBy (state, payload) {
      state.count += payload.amount // Zmena stavu s payload
    }
  }
})

// Volanie mutácie
store.commit('increment')
store.commit('incrementBy', { amount: 10 })

Kľúčové body:

  • Synchronné: Všetky mutácie sa vykonávajú synchronne, čo zabezpečuje predvídateľnosť zmien stavu.
  • Iba spôsob: Iba mutácie môžu priamo meniť stav.
  • commit: Mutácie sa volajú pomocou metódy store.commit().
  • Payload: Mutácia môže prijať druhý argument - payload, obsahujúci dodatočné údaje.
  • Sledovanie: Vuex Devtools sleduje všetky vykonané mutácie, čo uľahčuje ladenie.

Rozdiely od akcií (actions):

  • Synchronné vs Asynchrónne: Mutácie sú synchronné, akcie môžu obsahovať asynchrónne operácie.
  • Priama zmena stavu vs Commit mutácií: Mutácie menia stav priamo, akcie commit-ujú mutácie.
Charakteristika Mutácie Akcie
Synchronné Synchronné Môžu byť asynchrónne
Zmena stavu Priamo menia stav Commit-ujú mutácie
Volanie store.commit() store.dispatch()
Účel Zápis stavu Obchodná logika, asynchrónne operácie