Junior
Explique ce qu'est Vuex avec vos propres mots.
sobes.tech IA
Réponse de l'IA
Vuex est une bibliothèque de gestion d'état pour les applications Vue.js. Il s'agit d'un magasin centralisé pour tous les composants de l'application, où vous pouvez stocker des données qui doivent être accessibles depuis différentes parties de l'application sans avoir besoin de les transmettre via des props ou des événements.
Vuex se compose des parties principales suivantes :
- State : Objet contenant toutes les données communes de l'application. C'est la "source unique de vérité".
- Getters : Fonctions pour obtenir des données de l'état. Elles sont similaires aux propriétés calculées dans les composants Vue.
- Mutations : Fonctions qui modifient directement l'état. Elles sont synchrones. La seule façon de changer l'état est d'appeler une mutation.
- Actions : Fonctions pouvant contenir des opérations asynchrones. Elles ne modifient pas directement l'état, mais appellent des mutations.
- Modules : Permettent de diviser le magasin en modules, chacun avec son propre état, getters, mutations et actions, pour les grandes applications.
Principe de fonctionnement :
- Les composants obtiennent des données du
stateviagetters. - Les actions de l'utilisateur (clics, entrées) appellent des
actions. - Les
actionspeuvent effectuer des opérations asynchrones (par exemple, des requêtes API). - Les
actionsappellent desmutationspour modifier lestate. - Les changements de
statemettent automatiquement à jour de manière réactive les composants.
Exemple d'utilisation :
Supposons que nous ayons un compteur dont la valeur doit être accessible depuis différents composants.
// 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>Compteur : {{ count }}</p>
<p>Compteur doublé : {{ doubleCount }}</p>
<button @click="increment">Ajouter</button>
<button @click="decrement">Retirer</button>
<button @click="incrementAsync">Ajouter asynchrone</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 aide à organiser la gestion de l'état de l'application, la rendant plus prévisible et plus facile à déboguer, surtout dans les grands projets complexes.