Sobes.tech
Middle

Pověz mi o mutacích ve Vuex.

sobes.tech AI

Odpověď od AI

Mutace v Vuex jsou jediným způsobem, jak změnit stav úložiště. Jsou synchronní a přijímají stav (state) jako první argument. Druhým argumentem může být objekt payload.

Definují se v objektu mutations modulu nebo kořenového úložiště. Volají se pomocí metody commit.

// Definice mutace
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++ // Změna stavu
    },
    incrementBy (state, payload) {
      state.count += payload.amount // Změna stavu s payload
    }
  }
})

// Volání mutace
store.commit('increment')
store.commit('incrementBy', { amount: 10 })

Klíčové body:

  • Synchronní: Všechny mutace jsou prováděny synchronně, což zajišťuje předvídatelnost změn stavu.
  • Jediný způsob: Pouze mutace mohou přímo měnit stav.
  • commit: Mutace se volají pomocí metody store.commit().
  • Payload: Mutace může přijmout druhý argument - payload, obsahující dodatečné údaje.
  • Sledování: Vuex Devtools sledují všechny provedené mutace, což usnadňuje ladění.

Rozdíly od akcí (actions):

  • Synchronní vs Asynchronní: Mutace jsou synchronní, akce mohou obsahovat asynchronní operace.
  • Přímá změna stavu vs Commit mutací: Mutace přímo mění stav, akce commitují mutace.
Charakteristika Mutace Akce
Synchronní Synchronní Mohou být asynchronní
Změna stavu Přímo mění stav Commit mutací
Volání store.commit() store.dispatch()
Účel Zápis stavu Obchodní logika, asynchronní operace