Sobes.tech
Middle

Խոսեք ինձ Vuex-ի մուտացիաներ մասին։

sobes.tech AI

Պատասխան AI-ից

Vuex- ում մուտացիաները միակ միջոցն են վիճակի փոփոխության համար: Դրանք սինխրոն են և ընդունում են վիճակը (state) որպես առաջին արգումենտ: Երկրորդ արգումենտը կարող է լինել payload օբյեկտ:

Նշվում են mutations օբյեկտում մոդուլում կամ հիմնական պահոցում: Դրանք կանչվում են commit մեթոդով:

// Մուտացիայի սահմանում
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++ // վիճակի փոփոխություն
    },
    incrementBy (state, payload) {
      state.count += payload.amount // վիճակի փոփոխություն payload-ով
    }
  }
})

// Մուտացիայի կանչ
store.commit('increment')
store.commit('incrementBy', { amount: 10 })

Հիմնական կետեր:

  • Սինխրոնություն: Բոլոր մուտացիաները սինխրոն են, ինչը ապահովում է փոփոխությունների կանխատեսելիությունը:
  • Միակ միջոցը: Միայն մուտացիաներն են կարող փոփոխել պահոցը ուղղակիորեն:
  • commit: Մուտացիաները կանչելու համար օգտագործվում է store.commit() մեթոդը:
  • Payload: Մուտացիան կարող է ընդունել երկրորդ արգումենտը՝ payload-ը՝ լրացուցիչ տվյալներով:
  • Հետևում: Vuex Devtools-ը հետևում է բոլոր կատարված մուտացիաներին, ինչը հեշտացնում է դետալների հայտնաբերումն ու վերլուծությունը:

Տարբերությունները գործողությունների (actions) հետ:

  • Սինխրոնություն ընդդեմ ասինխրոնության: Մուտացիաները սինխրոն են, գործողությունները կարող են պարունակել ասինխրոնային օպերացիաներ:
  • Ուղիղ փոփոխություն վիճակի: Մուտացիաները ուղղակիորեն փոփոխում են վիճակը, գործողությունները կոմմիտ են մուտացիաներին:
Գծագրություն Մուտացիաներ Գործողություններ
Սինխրոնություն Սինխրոն են Կարող են լինել ասինխրոնային
Փոփոխություն Ուղղակի փոփոխում է վիճակը Կոմմիտ են մուտացիաներին
Կոչ store.commit() store.dispatch()
Նպատակը Վիճակի գրառում Բիզնես-լոգիկա, ասինխրոն օպերացիաներ