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ódystore.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 |