Variables réactives
Variables réactives
Résumé express : Calculer automatiquement le pourcentage de progression avec variables computed, map et filter pour une réactivité en temps réel.
Introduction aux variables computed
Nous allons créer un indicateur de progression qui affiche le pourcentage d'avancement du projet. Concrètement : nombre de tâches terminées / nombre total de tâches × 100.
Pourquoi une variable computed ?
Contrairement aux variables classiques, les variables computed se recalculent automatiquement quand les données changent. Parfait pour un pourcentage qui doit être mis à jour à chaque ajout ou modification de tâche.
1. Créer la variable computed
Configuration de base
- Créer une variable computed nommée "percentage"
- L'afficher dans l'interface (par exemple entre parenthèses dans le header)
- Accéder à l'onglet Logic pour définir le calcul
2. Calculer le nombre total de tâches
Récupérer les données du store
- Utiliser get store
- Spread le store pour accéder aux propriétés
- Utiliser get property pour récupérer "cards"
Utiliser la fonction Map
La fonction Map exécute une fonction sur chaque élément d'un tableau.
- Connecter le tableau de cartes à un bloc Map
- Créer une lambda function (fonction anonyme)
- Dans cette fonction :
- Récupérer l'élément courant
- Utiliser get property pour obtenir "tasks"
- Utiliser get length pour compter les tâches
- Connecter à l'exécution de la computed
Additionner tous les résultats
- Le Map retourne un tableau de nombres (nombre de tâches par carte)
- Utiliser Sum pour additionner tous les éléments
- Résultat : nombre total de tâches dans l'application
3. Calculer le nombre de tâches terminées
Filtrer les cartes "Terminé"
- Récupérer à nouveau le store et les cartes
- Utiliser Filter au lieu de Map
- Le Filter garde seulement les éléments qui passent un test
Configurer le test de filtrage
- Dans la lambda function du Filter :
- Utiliser get property pour récupérer "title"
- Tester si title equals "Terminé"
- Le callback devient rouge (boolean) car c'est un test
- Connecter à l'exécution (après le Map)
Compter les tâches de la carte "Terminé"
- Le Filter retourne un tableau avec un seul élément (la carte "Terminé")
- Utiliser hat (index 0) pour récupérer le premier élément
- Get property → "tasks" → get length
- Résultat : nombre de tâches terminées
4. Calculer le pourcentage
Division et formatage
- Utiliser Divide : tâches terminées ÷ tâches totales
- Multiply par 100 pour avoir un pourcentage
- Round pour arrondir le résultat
- Connecter le résultat final à la variable percentage
Fonction Deep pour les tableaux
⚠️ Important : Comme nous utilisons des tableaux, ajouter la fonction deep à la computed pour qu'elle surveille les changements en profondeur.
Structure logique complète
Le flux de données complet :
- Store → cartes → Map → longueurs → Sum = total des tâches
- Store → cartes → Filter → carte "Terminé" → Hat[0] → tâches → Length = tâches terminées
- Divide → Multiply 100 → Round = pourcentage final
Concepts clés
Variables computed
- Réactivité automatique : recalcul à chaque changement des dépendances
- Performance optimisée : mise en cache jusqu'au prochain changement
- Déclaratif : on décrit ce qu'on veut, pas comment l'obtenir
Fonctions de tableau avancées
- Map : transformation de chaque élément
- Filter : sélection conditionnelle d'éléments
- Sum : agrégation de valeurs numériques
- Hat[index] : accès à un élément spécifique
Surveillance profonde
- deep : nécessaire pour surveiller les changements dans les objets/tableaux
- Sans deep : seules les références sont surveillées
- Avec deep : tous les changements internes sont détectés
Avantages de cette approche
- Temps réel : l'indicateur se met à jour instantanément
- Automatique : aucune action manuelle requise
- Performant : recalcul uniquement si nécessaire
- Maintenable : logique centralisée et réutilisable
Prochainement : Organiser et structurer le code avec des fonctions réutilisables.