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) менен айырмачылыктар:
- Синхрондук vs Асинхрондук: Муттациялар синхрондуу, иш-аракеттер асинхрондук операцияларды камтышы мүмкүн:
- Түз өзгөртүү vs Муттацияларды кыюу: Муттациялар түздөн-түз өзгөртөт, иш-аракеттер кыйыш мутацияларга:
| Өзгөчөлүк | Муттациялар | Иш-аракеттер |
|---|---|---|
| Синхрондуулук | Синхрондуу | Асинхрондук болушу мүмкүн |
| Абалды өзгөртүү | Түз өзгөртөт | Муттацияларды кыюу |
| Чакыруу | store.commit() |
store.dispatch() |
| Максаты | Абалды жазуу | Бизнес-логика, асинхрондук операциялар |