Junior
Izskaidrojiet, kas ir Vuex, saviem vārdiem.
sobes.tech AI
Atbilde no AI
Vuex ir bibliotēka stāvokļa pārvaldībai Vue.js lietojumprogrammās. Tā nodrošina centrālo glabātuvi visiem komponentiem, kurā var glabāt datus, kas jābūt pieejamiem no dažādām lietojuma daļām bez to nodošanas caur propēm vai notikumiem.
Vuex sastāv no šādām galvenajām daļām:
- State: Objekts, kas satur visus kopīgos lietojuma datus. Tas ir "patiesības avots".
- Getters: Funkcijas, kas iegūst datus no stāvokļa. Tie ir līdzīgi aprēķinātām īpašībām Vue komponentos.
- Mutācijas: Funkcijas, kas tieši maina stāvokli. Tās ir sinhronas. Vienīgais veids, kā mainīt stāvokli — izsaukt mutation.
- Actions: Funkcijas, kas var saturēt asīnhronas operācijas. Tās tieši nemaina stāvokli, bet izsauc mutations.
- Modules: Ļauj sadalīt glabātuvi moduļos, katram ar savu state, getters, mutations un actions, lielākām lietojumprogrammām.
Darba princips:
- Komponenti iegūst datus no
statecaurgetters. - Lietotāja darbības (klikšķi, ievades) izsauc
actions. Actionsvar veikt asīnhronas operācijas (piemēram, API pieprasījumus).Actionsizsaucmutations, lai mainītustate.Stateizmaiņas automātiski reaktīvi atjaunina komponentus.
Piemērs lietošanai:
Pieņemsim, mums ir skaitītājs, kura vērtība jābūt pieejamai no dažādām komponentēm.
// 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>Skaitītājs: {{ count }}</p>
<p>Dublētais skaitītājs: {{ doubleCount }}</p>
<button @click="increment">Pievienot</button>
<button @click="decrement">Atņemt</button>
<button @click="incrementAsync">Asinhroni pievienot</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 palīdz organizēt lietojumprogrammas stāvokļa pārvaldību, padara to prognozējamāku un vieglāk labojamu, īpaši lielās un sarežģītās projektos.