Junior
Նկարագրեք, թե ինչ է Vuex-ը ձեր սեփական բառերով։
sobes.tech AI
Պատասխան AI-ից
Vuex գրադարանը Vue.js հավելվածների վիճակի կառավարման համար։ Այն կենտրոնական պահեստ է բոլոր կոմպոնենտների համար, որտեղ կարելի է պահել տվյալներ, որոնք պետք է հասանելի լինեն տարբեր մասերից՝ առանց նրանց փոխանցելու պրոփերով կամ իրադարձություններով:
Vuex-ը բաղկացած է հետևյալ հիմնական մասերից՝
- State: Օբյեկտ, որը պարունակում է բոլոր ընդհանուր տվյալները։ Դա է "միակ ճշմարտության աղբյուրը"։
- Getters: Ֆունկցիաներ, որոնք ստանում են տվյալները վիճակից։ Դրանք նման են հաշվարկվող հատկությունների Vue կոմպոնենտներում:
- Mutations: Ֆունկցիաներ, որոնք ուղղակիորեն փոխում են վիճակը։ Դրանք սինխրոնային են։ Միակ միջոցը վիճակին փոխելու համար՝ կանչել mutation:
- Actions: Ֆունկցիաներ, որոնք կարող են պարունակել ասինխրոնային օպերացիաներ։ Դրանք ուղղակիորեն չեն փոխում վիճակը, այլ կանչում են mutations:
- Modules: Դրանք թույլ են տալիս բաժանել պահեստը մոդուլների՝ յուրաքանչյուրի իր state, getters, mutations և actions-ով՝ մեծ ծրագրերի համար:
Աշխատանքի սկզբունքը՝
- Կոմպոնենտները ստանում են տվյալները
state-իցgetters-ի միջոցով: - Օգտագործողի գործողությունները (կլիկներ, մուտքեր) կանչում են
actions: Actionsկարող են կատարել ասինխրոնային օպերացիաներ (օրինակ՝ API-ների հարցումներ):Actionsկանչում ենmutations՝state-ը փոխելու համար:state-ի փոփոխությունները ավտոմատ կերպով ռեակտիվորեն թարմացնում են կոմպոնենտները:
Օգտագործման օրինակ՝
Ենթադրենք, ունենք հաշվիչ, որի արժեքը պետք է հասանելի լինի տարբեր կոմպոնենտներից:
// store.js
import { createStore } from 'vuex';
const store = createStore({
state() {
return {
count: 0
};
},
mutations: {
increment(state) {
state.count++;
},
decrement(state) {
state.count--;
}
},
actions: {
incrementAsync({ commit }) {
setTimeout(() => {
commit('increment');
}, 1000);
}
},
getters: {
doubleCount(state) {
return state.count * 2;
}
}
});
export default store;
<!-- Component.vue -->
<template>
<div>
<p>Հաշվիչ: {{ count }}</p>
<p>Երկկողմ հաշվիչ: {{ doubleCount }}</p>
<button @click="increment">Ավելացնել</button>
<button @click="decrement">Հանել</button>
<button @click="incrementAsync">Ասինխրոն ավելացում</button>
</div>
</template>
<script>
import { useStore } from 'vuex';
import { computed } from 'vue';
export default {
setup() {
const store = useStore();
const count = computed(() => store.state.count);
const doubleCount = computed(() => store.getters.doubleCount);
const increment = () => store.commit('increment');
const decrement = () => store.commit('decrement');
const incrementAsync = () => store.dispatch('incrementAsync');
return {
count,
doubleCount,
increment,
decrement,
incrementAsync
};
}
};
</script>
Vuex-ը օգնում է կազմակերպել հավելվածի վիճակի կառավարմանը, դարձնելով այն ավելի կանխատեսելի և հեշտ հարթելու, հատկապես մեծ և բարդ նախագծերում։