Apprendre Vue.js 3 - Jour 3 : Vuex - DEV Community
Maybe your like
Si vous désirez plus de contenu francophone comme celui-ci, cliquer Follow ou suivez-moi sur Twitter
Vuex - State ManagmentLe state management pour votre application Vue
La création de plusieurs components et plusieurs sous components entraine comme conséquence un partage des données et méthodes (via les Props et les Events) entre components qui devient vient très complex. Afin de simplifier cette gestion, Vue met à votre disposition la librairie Vuex.
Vuex permet de centraliser la gestion du state (des données et méthodes) de vos components en un seul endroit. Cet endroit est appelé le Store.
Le store permet de sauvegarder et de modifier votre state et cela à partir de n'importe quel component de votre application.
Du coup, le store est donc ce que l'on appel le 'single source of truth" de votre application.
L'historique de toutes les modifications faite au store est sauvegardé ce qui permet de faciliter grandement le débugging de votre application
Pour créer un store vous devez d'abord installer la librairie Vuex et initialiser l'object Vuex
vue add vuex@next Enter fullscreen mode Exit fullscreen modeEmplacement de votre Store Vuex
Créer un dossier et fichier sour src/store/index.js
Ajouter le code de création du Store
import { createStore } from 'vuex' const store = CreateStore({ state() { return { title: 'Hello World' } } ) export default store Enter fullscreen mode Exit fullscreen modeUne fois le Store créer, vous pouvez le lier à votre application en ajoutant ce code à src/main.js
import store from './store' ... ... app.use(store) app.mount('#app') Enter fullscreen mode Exit fullscreen modeUne fois votre store lié à votre application vous pouvez utiliser la méthode spécial $store pour accéder à votre store de n'importe quel component
<template> <h1>{{ $store.state.title }}</h1> </template> Enter fullscreen mode Exit fullscreen modeÀ noter que si la variable title de votre store change, tous les components ou sous component qui l'utilise seront automatiquement mis à jour.
Méthode computed
Pour accéder au store, il n'est pas considérer de bonne pratique d'utiliser directement ex. $store.state.title dans votre template.
La convention veut que vous utilisé une méthode computed
computed: { title() { return this.$store.state.title } } // ou composition API <script> import { ref, computed } from 'vue' import { useStore } from 'vuex' export default { setup() { const store = useStore() return { title: computed(() => store.state.title) } } } </script> Enter fullscreen mode Exit fullscreen mode <template> <h1>{{ title }}</h1> </template> Enter fullscreen mode Exit fullscreen modemapStates
Si vous avez plusieurs variables state à créer, ça peut en effet prendre plus de temps pour écrire une computed pour chaque variable. C'est pourquoi Vue met à votre disposition une syntaxe raccourci
import { mapStates } from 'vuex' computed: mapStates([ 'title', 'count', 'user' ]) Enter fullscreen mode Exit fullscreen modeModifier le State avec les Mutations
Une méthode de mutation permet de modifier votre state.
src/store/index.js
import { createStore } from 'vuex' const store = CreateStore({ state() { return { title: 0 } }, mutations: { SET_TITLE(state, payload) { state.title = payload } } ) export default store Enter fullscreen mode Exit fullscreen modeÀ noter que par convention les méthodes de mutations sont écrite en lettre majuscule ACTION_VARIABLE
Méthode commit()
Pour appeler la mutation à partir de votre component vous utilisez la méthode commit
mounted() { this.$store.commit('SET_TITLE', 'My new Title') } Enter fullscreen mode Exit fullscreen modeSyntaxe raccourci si plusieurs déclaration
import { mapMutations } from 'vuex' methods: { ...mapMutations([ 'SET_TITLE', 'SET_COUNT', 'SET_USER' ]) }, mounted() { this.SET_TITLE('My new Title') } Enter fullscreen mode Exit fullscreen modeÀ noter que par convention vous ne devez jamais avoir de méthode de mutation async
Actions
Les méthode qui utilisent le async vont être géré avec les Actions
Les Actions sont également utilisés quand vous désirez effectuer un traitement plus complex sur le state.
import { createStore } from 'vuex' const store = CreateStore({ state() { return { title: 0 } }, mutations: { SET_TITLE(state, payload) { state.title = payload } }, actions: { resetTitle({ commit }, payload ) { ... code async possible ici ... ... ex. lire une api ... commit('SET_TITLE', '') } } ) export default store Enter fullscreen mode Exit fullscreen modeLes méthodes actions peuvent avoir accès au paramètre context qui est en faite l'object $store. Il est donc possible de faire de la déconstruction. ex. { state, commit, mutations, etc. }
Méthode dispatch()
Pour appeler les actions à partir de vos component vous utilisez la méthode dispatch()
async mounted() { await this.$store.dispatch('resetTitle') } Enter fullscreen mode Exit fullscreen modeÀ noter que le async/await est utiliser seulement si besoin async
Syntaxe raccourci si plusieurs déclaration
import { mapActions } from 'vuex' methods: { ...mapActions([ 'resetTitle', 'resetCount', 'resetUser' ]) }, mounted() { this.resetTitle() } Enter fullscreen mode Exit fullscreen modeExemple store.dispatch() et computed() avec 'script setup'
<script setup> import { computed } from 'vue' import { useStore } from 'vuex' const store = useStore() const products = computed(() => store.state.products) store.dispatch('fetchProducts') </script> Enter fullscreen mode Exit fullscreen modeConclusion
Merci d'avoir lu cet article. Si vous désirez plus de contenu francophone comme celui-ci, cliquer Follow ou suivez-moi sur Twitter
Tag » Apprendre Vue Js 3
-
Apprendre Vue.js 3 - Jour 1 : Concepts De Base
-
Apprendre à Utiliser Vue JS 3 En Ligne | Skilleos
-
Tutoriel VueJS 3 Pour Les Débutants - Gekkode
-
Créez Une Application Web Avec Vue.js - OpenClassrooms
-
Vue.js 3 - La Formation Complète Pour Débutants | Udemy
-
Introduction - Vue.js
-
[ Tuto ] Vue JS 3 : Les Bases ! ( Tutorial Pour Débutant En Français )
-
Apprendre VueJS | Grafikart
-
Les Bases De Vue.JS 3 - Introduction Et Installation - Training-dev
-
Formation Vue JS 3 : Maîtriser Les Bases - Alphorm
-
Formation En Ligne : Maîtrisez Le Framework Vue.js 3 - Neoddity
-
Formation Complète Vue.js 3 - DevTheory
-
[PDF] Vue.js - RIP Tutorial
-
Premiers Pas Avec Vue.js - Learn | Microsoft Docs