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 metodestore.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 |