MODULE V09 — EXERCICES

Exercices Composables

10 exercices pour maîtriser la réutilisation de logique avec les composables Vue 3.

10 exercices Validation automatique Solutions téléchargeables (.js)
EX 1

useToggle — toggle boolean avec ref

Tâche : Créez un composable useToggle(valeurInitiale) qui retourne { valeur, basculer, activer, desactiver }. valeur est une ref booléenne.

EX 2

useLocalStorage — sauvegarder/restaurer une ref

Tâche : Créez useLocalStorage(key, valeurDefaut). La ref est initialisée depuis localStorage. Un watch sauvegarde automatiquement à chaque changement.

EX 3

useFetch — fetch avec loading/error

Tâche : Créez useFetch(url) qui retourne { data, loading, error }. loading est true pendant le fetch, error contient le message d'erreur si le fetch échoue.

EX 4

useDebounce — valeur débouncée

Tâche : Créez useDebounce(source, delai). La ref retournée ne se met à jour qu'après delai ms d'inactivité (utiliser setTimeout + clearTimeout).

EX 5

useWindowSize — largeur/hauteur réactives

Tâche : Créez useWindowSize() qui retourne { width, height } — deux refs initialisées avec window.innerWidth/innerHeight et mises à jour à chaque resize.

EX 6

useKeyPress — détecter une touche clavier

Tâche : Créez useKeyPress(touche) qui retourne { appuyee, derniereTouche }. appuyee est true quand la touche est enfoncée. Nettoyer les listeners dans onUnmounted.

EX 7

useClickOutside — clic hors d'un élément

Tâche : Créez useClickOutside(elementRef, callback). La callback est appelée quand l'utilisateur clique en dehors de l'élément référencé. Nettoyer dans onUnmounted.

EX 8

useInterval — setInterval avec cleanup

Tâche : Créez useInterval(callback, delai) qui démarre un setInterval dans onMounted et le stoppe avec clearInterval dans onUnmounted.

EX 9

Bibliothèque de 2+ composables utilisés ensemble

Tâche : Créez au moins 2 composables (useToggle et useLocalStorage) et utilisez-les ensemble dans un composant setup(). Le résultat doit être fonctionnel.

EX 10

useSearch avancé — filtrage + debounce + loading

Tâche : Créez useSearch(items, options) avec filtrage sur des champs, debounce de 300ms et état loading. Retourner { query, loading, resultats, nbResultats }.

🧠 Prêt pour le QCM ? Testez vos connaissances sur les Composables — 10 questions.
Passer le QCM V09
← Cours V09 ▶ Mini-projet : Dashboard Suivant : Lifecycle →