Explication détaillée de la fonction app.directive() de Vue3
app.directive()est une fonction très puissante qui permet aux développeurs de définir des directives globales personnalisées.
Les directives sont une fonctionnalité spéciale fournie par Vue, utilisée pour manipuler directement les éléments DOM. En utilisantapp.directive(), vous pouvez définir vos propres directives et les utiliser dans toute l'application.
1. Qu'est-ce qu'une directive ?
Les directives sont des attributs spéciaux dans Vue qui commencent parv-. Vue dispose de quelques directives couramment utilisées intégrées, telles quev-if、v-for、v-bindetc. Ces directives peuvent nous aider à manipuler les éléments DOM plus facilement.
Par exemple,v-ifla directive peut décider si un élément doit être rendu en fonction de la valeur d'une expression :
Exemple
QuandisVisibleesttruewhendivl'élément sera rendu ; sinon,divl'élément ne sera pas rendu.
2. Directives personnalisées
En plus des directives intégrées, Vue nous permet également de définir nos propres directives. Les directives personnalisées peuvent être utilisées pour gérer des opérations DOM spécifiques, telles que le focus automatique, l'écoute du défilement, etc.
Dans Vue3, nous pouvons utiliser laapp.directive()fonction pour enregistrer une directive globale.
3. Utilisation de base de app.directive()
app.directive()La fonction accepte deux paramètres :
- Nom de la directive :Définissez le nom de la directive. Notez qu'il ne doit pas inclure le
v-préfixe. - Objet de directive :Un objet contenant des fonctions de hook de directive, utilisé pour définir le comportement de la directive.
3.1 Enregistrer une directive simple
Supposons que nous devions définir une directive qui met automatiquement le focus sur l'élément lorsqu'il est inséré dans le DOM. Nous pouvons l'implémenter comme ceci :
Exemple
const app = createApp({});
app.directive('focus', {
mounted(el) {
el.focus();
}
});
app.mount('#app');
Dans cet exemple, nous définissons une directive nomméefocusdirective. Lorsque l'élément est inséré dans le DOM, lamountedfonction de hook sera appelée, etel.focus()fera automatiquement prendre le focus à l'élément.
3.2 Utilisation de directives personnalisées
Lorsque vous utilisez une directive personnalisée dans un template, vous devez ajouter lev-préfixe :
Exemple
Lorsque la page se charge, lainputélément obtiendra automatiquement le focus.
4. Fonctions de hook de directive
Les directives personnalisées peuvent avoir plusieurs fonctions de hook pour effectuer des opérations spécifiques à différentes étapes du cycle de vie. Les fonctions de hook incluent :
- mounted: appelée lorsque la directive est insérée dans le DOM.
- updated: appelée lorsque le composant de la directive se met à jour.
- unmounted: appelée lorsque l'élément de la directive est retiré du DOM.
4.1 Exemple : Écoute des événements de défilement
Supposons que nous devions effectuer certaines opérations lorsque l'utilisateur fait défiler la page. Nous pouvons utiliser unescrolldirective :
Exemple
mounted(el, binding) {
const handler = binding.value;
el.addEventListener('scroll', handler);
},
unmounted(el, binding) {
const handler = binding.value;
el.removeEventListener('scroll', handler);
}
});
Dans cet exemple, lamountedfonction hook est utilisée pour ajouter un écouteur d'événement de défilement, et launmountedfonction hook est utilisée pour supprimer l'écouteur.
4.2 Utilisation de la directive Scroll
Exemple
<p>Contenu du défilement...</p>
</div>
Définissez laonScrollméthode dans le composant :
Exemple
onScroll(événement) {
console.log('L’utilisateur fait défiler', event);
}
}
Lorsque l'utilisateur fait défiler ladivélément,onScrollla méthode sera appelée.
5. Paramètres et modificateurs de directive
Les directives personnalisées peuvent accepter des paramètres et des modificateurs. Les paramètres sont la partie après les deux-points dans le nom de la directive, et les modificateurs sont la partie après le point dans le nom de la directive.
5.1 Exemple : Utilisation des paramètres et des modificateurs
Supposons que nous devions définir unecolordirective qui définit la couleur d'arrière-plan de l'élément en fonction du paramètre :
Exemple
mounted(el, binding) {
const color = binding.arg || 'red';
const modifiers = binding.modifiers;
if (modifiers.bold) {
el.style.fontWeight = 'bold';
}
el.style.backgroundColor = color;
}
});
Utilisez-le dans le template :
Exemple
Dans cet exemple, lablueest le paramètre de la directive, etboldest le modificateur.
Autres extensions
Vue3 API globale