0Pricing
Vue Academy · Leçon

É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.directive ou localement sous la forme de vName dans script setup.
  • binding.value, binding.arg et binding.modifiers transmettent 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

  1. v-model : mécanismes de la liaison bidirectionnelle
  2. Modificateurs d’événements v-on
  3. Liaisons dynamiques et multiples avec v-bind
  4. Écrire des directives personnalisées
← Retour à Vue Academy