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() |
| Նպատակը | Վիճակի գրառում | Բիզնես-լոգիկա, ասինխրոն օպերացիաներ |