Sobes.tech
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 naudojamas store.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