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í metodystore.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 |