V04 — Exercices Composants

10 exercices progressifs pour maîtriser les composants Vue 3.

01

Composant simple avec app.component()

Enregistrez un composant global MonBouton avec app.component(). Le composant doit afficher un bouton avec un slot pour le texte. Utilisez ensuite ce composant dans le template de l'app.

02

Props avec types et required

Créez un composant CarteUtilisateur avec les props suivantes :
- nom (String, required)
- age (Number, required)
- email (String, optionnel)
Affichez ces informations dans un template.

03

Props avec valeurs par défaut

Créez un composant BadgeStatut avec des valeurs par défaut :
- texte (String, défaut : "Actif")
- couleur (String, défaut : "green")
- taille (String, défaut : "md")

04

Émettre un événement simple

Créez un composant BoutonFermer qui émet un événement 'fermer' quand on clique dessus. Déclarez cet événement dans emits et utilisez this.$emit('fermer').

05

Émettre un événement avec payload

Créez un composant SaisieNote avec une note (1-5) et un commentaire. Quand l'utilisateur soumet, émettez l'événement 'noter' avec un objet { note, commentaire, date } comme payload.

06

Slot par défaut

Créez un composant PanneauInfo avec une prop titre et un slot par défaut pour injecter du contenu. Le parent doit pouvoir mettre n'importe quel HTML dans le composant.

07

Slots nommés

Créez un composant Carte avec trois zones distinctes via des slots nommés :
- <slot name="header" />
- <slot /> (contenu principal)
- <slot name="footer" />

08

v-model sur composant

Créez un composant MonInput qui supporte v-model. Il doit :
- Accepter la prop modelValue
- Émettre 'update:modelValue' à chaque frappe
Ainsi le parent peut écrire : <MonInput v-model="texte" />

09

provide / inject

Créez une hiérarchie de composants où :
- Le composant racine provide() un objet avec theme et langue
- Un composant intermédiaire qui ne touche pas à ces données
- Un composant profond qui inject et affiche ces données

10

Architecture composants imbriqués

Créez une mini-app de liste de tâches avec 3 niveaux :
1. ListeTaches (gère le tableau de tâches, méthodes toggle)
2. ItemTache (reçoit une tâche via props, émet 'toggle')
3. BoutonCheck (bouton visuel, émet 'cliquer')
La communication remonte via les emits de chaque niveau.

← Cours V04 ▶ Mini-projet Suivant V05 →