Sobes.tech
Middle

Реци ми о мутацијама у Vuex.

sobes.tech АИ

Одговор од АИ

Mutacije u Vuex su jedini način za promenu stanja skladišta. One su sinhrone i primaju stanje (state) kao prvi argument. Drugi argument može biti objekat payload.

Definišu se u objektu mutations modula ili korenog skladišta. Pozivaju se pomoću metode commit.

// Definicija mutacije
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++ // Promena stanja
    },
    incrementBy (state, payload) {
      state.count += payload.amount // Promena stanja sa payload-om
    }
  }
})

// Pozivanje mutacije
store.commit('increment')
store.commit('incrementBy', { amount: 10 })

Ključne tačke:

  • Sinhrone: Sve mutacije se izvršavaju sinhrono, što obezbeđuje predvidivost promena stanja.
  • Jedini način: Samo mutacije mogu direktno menjati stanje.
  • commit: Mutacije se pozivaju pomoću metode store.commit().
  • Payload: Mutacija može prihvatiti drugi argument - payload, koji sadrži dodatne podatke.
  • Praćenje: Vuex Devtools prati sve izvršene mutacije, olakšavajući debugging.

Razlike od akcija (actions):

  • Sinhrone vs Asinhrone: Mutacije su sinhrone, akcije mogu sadržavati asinhrone operacije.
  • Direktna promena stanja vs Commit mutacija: Mutacije direktno menjaju stanje, akcije commit-aju mutacije.
Karakteristika Mutacije Akcije
Sinhrone Sinhrone Mogu biti asinhrone
Promena stanja Direktno menjaju stanje Commit-aju mutacije
Poziv store.commit() store.dispatch()
Svrha Upis stanja Poslovna logika, asinhrone operacije