Sobes.tech
Middle

Pastāsti man par Vuex mutācijām.

sobes.tech AI

Atbilde no AI

Vuex mutācijas ir vienīgais veids, kā mainīt glabātuves stāvokli. Tās ir sinhroniskas un pieņem stāvokli (state) kā pirmo argumentu. Otrajā argumentā var būt payload objekts:

Tās tiek definētas mutations objektā moduļa vai galvenajā glabātuvē. Tās tiek izsauktas ar commit metodi:

// Mutācijas definīcija
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++ // stāvokļa izmaiņa
    },
    incrementBy (state, payload) {
      state.count += payload.amount // stāvokļa izmaiņa ar payload
    }
  }
})

// Mutācijas izsaukšana
store.commit('increment')
store.commit('incrementBy', { amount: 10 })

Galvenie punkti:

  • Sinhroniskas: Visas mutācijas tiek izpildītas sinhroni, tas nodrošina prognozējamu stāvokļa izmaiņu sekvenci:
  • Vienīgais veids: Tikai mutācijas var tieši mainīt glabātuves stāvokli:
  • commit: Mutāciju izsaukšanai tiek izmantota store.commit() metode:
  • Payload: Mutācija var pieņemt otro argumentu - payload, kas satur papildu datus:
  • Uzraudzība: Vuex Devtools uzrauga visas veiktās mutācijas, tas atvieglo atkļūdošanu:

Atšķirības no darbībām (actions):

  • Sinhroniskas vs Asinhroniskas: Mutācijas ir sinhroniskas, darbības var saturēt asinhronas operācijas:
  • Tieša stāvokļa izmaiņa vs Mutāciju izsaukšana: Mutācijas tieši maina stāvokli, darbības izsauc mutācijas:
Raksturlielums Mutācijas Darbības
Sinhroniskas Sinhroniskas Var būt asinhronas
Stāvokļa izmaiņa Tieši maina stāvokli Izsauc mutācijas
Izsaukums store.commit() store.dispatch()
Mērķis Stāvokļa ieraksts Biznesa loģika, asinhronas operācijas