Middle
Papaskink man apie Vuex mutacijas.
sobes.tech AI
Atsakymas iš AI
Vuex mutacijos yra vienintelis būdas pakeisti saugyklos būseną. Jos yra sinchroninės ir priima būseną (state) kaip pirmą argumentą. Antru argumentu gali būti payload objektas:
Jos yra apibrėžtos mutations objekte modulyje arba pagrindiniame saugykloje. Jos yra kviečiamos naudojant commit metodą:
// Mutacijos apibrėžimas
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment (state) {
state.count++ // būsenos keitimas
},
incrementBy (state, payload) {
state.count += payload.amount // būsenos keitimas su payload
}
}
})
// Mutacijos kvietimas
store.commit('increment')
store.commit('incrementBy', { amount: 10 })
Pagrindiniai punktai:
- Synchronous: Visos mutacijos vykdomos sinchroniškai, tai užtikrina būsenos pokyčių prognozuojamumą:
- Vienintelis būdas: Tik mutacijos gali tiesiogiai keisti saugyklos būseną:
commit: Mutacijų kvietimui naudojamasstore.commit()metodas:- Payload: Mutacija gali priimti antrą argumentą - payload, kuris turi papildomų duomenų:
- Stebėjimas: Vuex Devtools stebi visas atliktas mutacijas, tai palengvina derinimą:
Skirtumai nuo veiksmų (actions):
- Synchronous vs Asynchronous: Mutacijos yra sinchroninės, veiksmai gali turėti asinchroninių operacijų:
- Tiesioginis būsenos keitimas vs Mutacijų vykdymas: Mutacijos tiesiogiai keičia būseną, veiksmai vykdo mutacijas:
| Savybė | Mutacijos | Veiksmai |
|---|---|---|
| Synchronous | Sinchroninės | Gali būti asinchroninės |
| Būsenos keitimas | Tiesiogiai keičia būseną | Vykdo mutacijas |
| Kvietimas | store.commit() |
store.dispatch() |
| Paskirtis | Būsenos įrašymas | Verslo logika, asinchroninės operacijos |