Écrire des directives personnalisées
app.directive(), hooks mounted/updated/unmounted, arguments et modificateurs des directives.
Écrire des directives personnalisées est une leçon Vue Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Vue Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Vue Academy comprend 4 leçons au total.
Quand les composants ne suffisent pas
Dans Vue, la plupart des réutilisations passent par les composants et les composables. Cependant, certaines logiques ciblent directement le DOM brut : donner automatiquement le focus à un champ de saisie, intégrer une bibliothèque qui n’est pas conçue pour Vue ou mesurer un élément. Les directives personnalisées sont précisément conçues pour cela.
Une directive minimale
Enregistrez une directive dans l’application avec app.directive. Le crochet mounted reçoit l’élément ; cette directive donne donc le focus à un champ de saisie lorsqu’il apparaît.
const app = createApp(App)
app.directive('focus', {
mounted(el) { el.focus() }
})Utiliser la directive
Appliquez-la dans un modèle avec le préfixe v- suivi du nom enregistré.
<template>
<input v-focus />
</template>Directives locales dans script setup
Dans <script setup>, toute variable de niveau supérieur qui commence par v et utilise le camelCase devient une directive utilisable. Nommez-la vFocus et utilisez-la sous la forme v-focus.
<script setup>
const vFocus = {
mounted: (el) => el.focus()
}
</script>
<template>
<input v-focus />
</template>L’objet de liaison
Chaque crochet reçoit un objet binding comme deuxième argument. Celui-ci contient la valeur, l’argument et les modificateurs de la directive transmis dans le modèle.
app.directive('demo', {
mounted(el, binding) {
console.log(binding.value, binding.arg, binding.modifiers)
}
})Transmettre une valeur
L’expression qui suit le signe égal devient binding.value. Ici, une couleur est transmise et appliquée à l’élément.
<!-- template -->
<p v-color="'red'">Hello</p>
<!-- directive -->
app.directive('color', {
mounted(el, binding) { el.style.color = binding.value }
})Transmettre un argument
La partie qui suit les deux-points devient binding.arg. Elle permet à une même directive d’avoir un comportement différent selon une étiquette.
<!-- v-pin:top means binding.arg === 'top' -->
<div v-pin:top="20"></div>Utiliser les modificateurs
Les modificateurs apparaissent après des points et sont transmis dans binding.modifiers sous la forme d’une table de valeurs booléennes. Utilisez-les pour ajuster le comportement.
<!-- v-pin.fixed -> binding.modifiers.fixed === true -->
<div v-pin.fixed="10"></div>Crochets du cycle de vie des directives
Les directives possèdent des crochets qui reflètent le cycle de vie des composants : created, beforeMount, mounted, beforeUpdate, updated, beforeUnmount et unmounted.
Réagir aux mises à jour
Le crochet updated s’exécute après le nouveau rendu de l’élément. Comparez binding.value à binding.oldValue pour n’agir que lors de véritables changements, et effectuez le nettoyage dans unmounted.
app.directive('color', {
mounted(el, binding) { el.style.color = binding.value },
updated(el, binding) {
if (binding.value !== binding.oldValue) el.style.color = binding.value
}
})Directives ou composants
Privilégiez les composants pour tout ce qui concerne la structure ou l’état. Utilisez les directives uniquement lorsque vous avez besoin d’un accès direct au DOM de bas niveau qui ne trouve pas sa place dans un composant, par exemple pour gérer le focus ou des composants DOM tiers.
Vérification rapide
Vérifiez vos connaissances des directives personnalisées.
Récapitulatif
Vous avez appris à créer des directives personnalisées :
- Enregistrez-les globalement avec
app.directiveou localement sous la forme devNamedans script setup. binding.value,binding.argetbinding.modifierstransmettent les données.- Crochets du cycle de vie : création, beforeMount, montage, beforeUpdate, mise à jour, beforeUnmount, démontage.
- Utilisez les directives pour les opérations de bas niveau sur le DOM ; privilégiez les composants dans les autres cas.
Questions Fréquemment Posées
La leçon « Écrire des directives personnalisées » est-elle gratuite ?
Oui — le texte complet de « Écrire des directives personnalisées » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Vue Academy, passe à CoddyKit PRO. Le cours Vue Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Écrire des directives personnalisées » ?
app.directive(), hooks mounted/updated/unmounted, arguments et modificateurs des directives. Tu pratiques Vue Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Vue Academy ?
Aucune expérience préalable n'est requise. Vue Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Écrire des directives personnalisées » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Vue Academy ?
Oui. Chaque leçon Vue Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- v-model : mécanismes de la liaison bidirectionnelle
- Modificateurs d’événements v-on
- Liaisons dynamiques et multiples avec v-bind
- Écrire des directives personnalisées