Séance 7 : State Avancé avec Pinia
🎯 Objectifs de la séance
Comprendre le rôle d'un store centralisé dans une architecture front-end professionnelle.
Maîtriser Pinia, le gestionnaire d'état officiel de Vue 3 et Nuxt 4 (Setup Stores avec Composition API).
Concevoir des stores typés avec TypeScript (
state,getters,actions).Mettre en place la persistance automatique de l'état (localStorage / Cookies /
pinia-plugin-persistedstate).Fil rouge DevFlow : Centraliser la gestion des tâches et de la session utilisateur dans des stores Pinia.
📖 1. Qu'est-ce qu'un Store et Pourquoi l'utiliser ?
Un Store est un conteneur centralisé pour l'état partagé d'une application. Plutôt que de faire transiter des données et des callbacks via des props à travers une arborescence profonde de composants (prop drilling), le store fournit une source unique de vérité (Single Source of Truth) accessible depuis n'importe quel composant ou composable.
┌──────────────────────┐
│ Store Pinia │
│ (tasks, user, token) │
└──────────┬───────────┘
│
┌───────────────────┼───────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ TaskHeader.vue │ │ TaskKanban.vue │ │ UserMenu.vue │
└─────────────────┘ └─────────────────┘ └─────────────────┘Pourquoi Pinia ?
Compatibilité native Vue 3 & Nuxt 4 : Utilise la Composition API (
ref,computed).Typage TypeScript irréprochable : Inférence automatique des types sans code verbeux.
Architecture modulaire : Chaque store est un fichier isolé (
useAuthStore,useTaskStore), pas de store monolithique complexe comme l'ancien Vuex.Support SSR natif : Gestion propre de la sérialisation et de l'hydratation du state entre serveur et client.
🏗️ 2. Structure d'un Store Pinia en Setup Syntax
Exemple : app/stores/taskStore.ts
💾 3. Persistance de l'État
Pour conserver les données d'un store lors du rechargement de page (ex: session utilisateur, préférences d'affichage), on utilise le module Nuxt @pinia-plugin-persistedstate/nuxt.
🛠️ 4. Travaux Pratiques
Installer le module Pinia pour Nuxt 4 (
@pinia/nuxt).Créer le store
useTaskStore.tset y migrer la gestion de la liste des tâches du projet DevFlow.Créer le store
useAuthStore.tspour gérer l'utilisateur connecté et simuler le flux de connexion/déconnexion.Raccorder les composants
TaskCard.vue,TaskColumn.vueetNavigationMenu.vueaux stores Pinia.
Last updated