Que sont les composants d'ordre supérieur (HOC) en Vue?
Jul 31, 2025 am 08:30 AMLes hocs en Vue sont des fonctions qui prennent un composant et renvoient une version améliorée, permettant à la réutilisation de la logique comme les états de chargement ou les vérifications des autheurs; 1. Ils aident à réutiliser la logique entre les composants, 2. Gardez les composants propres en résumé la configuration, 3. Ajouter une fonctionnalité sans modifications internes; Cependant, dans le Vue 3 moderne, les composants sont préférés en raison d'une meilleure flexibilité et d'un risque plus faible de problèmes comme l'enfer en wrapper ou les collisions de noms, ce qui en fait une solution plus idiomatique et maintenable pour la logique partagée.
Les composants d'ordre supérieur (HOC) sont un modèle dans Vue.js (et réagi) pour réutiliser la logique des composants. Bien que les HOC soient plus souvent associés à React, le concept peut être appliqué dans Vue - bien que l'écosystème de Vue offre des moyens plus idiomatiques (comme les composiables et les mixins) pour atteindre des objectifs similaires.

Dans Vue, un composant d'ordre supérieur est essentiellement une fonction qui prend un composant en entrée et renvoie un nouveau composant amélioré avec des accessoires, un comportement ou une logique supplémentaires.
Pourquoi utiliser des hocs?
Les hocs vous aident:

- Réutiliser la logique sur plusieurs composants (par exemple, la récupération des données, les vérifications d'authentification).
- Gardez les composants propres en abstraction de la logique de configuration du complexe.
- Enveloppez les composants avec des fonctionnalités supplémentaires sans modifier leurs internes.
Même si Vue 3 encourage à utiliser des composants (via l'API de composition), la compréhension des HOC est utile, en particulier lorsque vous travaillez avec des bases de code plus anciennes ou lorsque vous devez améliorer dynamiquement les composants.
Comment créer un hoc à Vue
Voici un exemple de base de HOC dans Vue 3 (Utilisation des options Style API pour plus de clarté):

// hoc / withloking.js Fonction d'exportation avec chargement (enveloppedComponent) { retour { accessoires: enveloppedComponent.props || [], données() { retour { Isloading: vrai, }; }, asynchronisé monté () { // Simuler le chargement attendre une nouvelle promesse (résolution => setTimeout (résolution, 1000)); this.isloking = false; }, rendre() { // transmets tous les accessoires d'origine et ajouter l'iséléchargement const props = {... this. $ props, IsoLing: this.isloking}; Renvoyez ce ? h ('div', 'Chargement ...') : h (enveloppedComponent, accessoires, this. $ slots); } }; }
Utilisez-le maintenant dans un composant:
import {withloking} de './hoc/withloading'; Importez UserData depuis './components/userdata.vue'; const userdatawithloading = withloking (userData); Exporter par défaut { Composants: { Userdatawithloading } };
Cela enveloppe UserData
avec un état de chargement - affichant automatiquement un message de chargement pendant 1 seconde avant de rendre le composant réel.
Cas d'utilisation courants
- Gardiens d'authentification : enveloppez un composant d'itinéraire pour vérifier si l'utilisateur est connecté.
- Remplacement des données : injectez les données asynchrones avant le rendu.
- Journalisation ou analyse : suivi lorsqu'un composant monte.
- Vérification de l'autorisation : Désactiver ou masquer les composants en fonction des r?les utilisateur.
Exemple: withAuth
hoc
Fonction WithAuth (enveloppedComponent, requiredRole = null) { retour { installation() { const user = useAuth (); // Supposons que cela renvoie l'utilisateur actuel if (! user.isloggedIn) { return () => h ('div', 'Veuillez vous connecter.'); } if (requiredRole && user.role! == requiredRole) { return () => h ('div', 'accès refusé.'); } return () => h (enveloppedComponent); } }; }
Hocs vs composibles vs mixins
Approche | Pros | Inconvénients |
---|---|---|
Hoc | Logique de wrapper réutilisable et claire | Peut conduire à l'enfer en wrapper, moins intuitif en Vue |
Mixins | Options faciles à fusionner | Collisions de noms, dépendances peu claires |
Composables | Flexible, shakable d'arbres, première classe dans Vue 3 | Nécessite des connaissances sur la composition de l'API |
? Dans la Vue moderne (3), préfèrent les composants . Ils sont plus flexibles et moins sujettes aux erreurs que les hocs ou les mixins.
Par exemple, la logique de chargement ci-dessus pourrait être écrite comme:
// Composables / Useloading.js Fonction d'exportation UseLoading (Delay = 1000) { const Isloading = ref (true); onMounted (async () => { attendre une nouvelle promesse (résoudre => setTimeout (résoudre, retard)); Isloading.Value = false; }); return {Isloading}; }
Puis utilisez-le directement dans n'importe quel composant:
installation() { const {Isloading} = useLoading (); return {Isloading}; }
Réflexions finales
Bien que les HOC soient possibles en Vue , ils ne sont pas le moyen idiomatique de partager la logique. Le système de réactivité et l'API de composition de Vue font des composants un mieux pour la plupart des cas d'utilisation.
Cela dit, les HOC peuvent toujours être utiles dans les scénarios avancés, comme envelopper dynamiquement les composants dans les bibliothèques ou lorsque vous avez besoin de résumer la logique de rendu.
Donc:
? Vous pouvez utiliser des hocs en Vue
? Ils sont inspirés par la réaction
? Mais dans la plupart des cas, une fonction composable est plus propre et plus maintenable
Fondamentalement, réfléchissez à deux fois avant de chercher un hoc - il y a probablement une manière plus simple et plus vue.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les propriétés calculées de Vue.js ne peuvent pas accepter directement les paramètres, qui sont déterminés par ses caractéristiques de conception, mais peuvent être implémentés indirectement à travers les propriétés calculées des méthodes ou des fonctions de retour. 1. Méthodes: Les paramètres peuvent être passés et utilisés dans des modèles ou des auditeurs, tels que FormatName (?John?, ?Doe?); 2. Encapsulez les attributs calculés dans la forme d'une fonction de retour: tels que FormatName renvoie une fonction qui accepte les paramètres, et appelez FormatName () ('Jane', 'Smith') dans le modèle. La méthode d'utilisation est généralement recommandée car elle est plus claire et plus facile à entretenir, et la manière de retourner les fonctions convient aux scénarios spéciaux où l'état interne et les valeurs externes sont nécessaires.

Headlessuiinvue fait référence à une bibliothèque de composants d'interface utilisateur qui ne fournissent pas de styles prédéfinis et ne contient que la logique et le comportement de base. Ses fonctionnalités incluent: 1. Aucune restriction de style, les développeurs peuvent personnaliser la conception; 2. Concentrez-vous sur la logique sans barrière et interactive, comme la navigation par clavier, la gestion de l'état, etc.; 3. Prise en charge de l'intégration du cadre Vue, exposant l'interface de contr?le via des fonctions ou des composants combinables. Les raisons d'utilisation comprennent: le maintien de la cohérence de conception, l'accessibilité intégrée, la solide réutilisabilité des composants et la taille de la bibliothèque légère. Dans les applications pratiques, les développeurs doivent écrire eux-mêmes HTML et CSS. Par exemple, lors de la construction d'un menu déroulant, la bibliothèque gère l'état et l'interaction, tandis que les développeurs décident d'une présentation visuelle. Les bibliothèques grand public incluent Headlessui et Radixvue pour TailwindLabs, adapté à

Dans Vue3, il existe trois fa?ons de surveiller les propriétés imbriquées en utilisant la fonction de montre: 1. Utilisez la fonction Getter pour surveiller avec précision les chemins imbriqués spécifiques, tels que Watch (() => SomeObject.nest.Property, rappel); 2. Ajoutez l'option {Deep: True} pour surveiller profondément les modifications dans l'ensemble de l'objet, ce qui convient aux situations où la structure est complexe et ne se soucie pas de la propriété change; 3. Renvoyez un tableau dans le Getter pour écouter plusieurs valeurs imbriquées en même temps, qui peuvent être utilisées en combinaison avec Deep: True; De plus, si REF est utilisé, les propriétés imbriquées de sa valeur. Value doivent être suivies via Getter.

Il est recommandé d'utiliser VITE pour créer des projets Vue3 car il utilise la prise en charge du module ES natif du navigateur et a une vitesse de démarrage rapide en mode de développement. 1. Assurez-vous d'installer Node.js (16.x ou supérieur) et NPM / YARN / PNPM; 2. Exécuter npmcreatevite @ Dermèremy-vue-App - TemplateVue Initialization Project; 3. Suivez les invites pour sélectionner TypeScript, VUerouter et autres configurations; 4. Exécuter les dépendances d'installation CDMY-Vue-App et NpMinstall; 5. Utilisez NPMRUNDEV pour démarrer le serveur de développement. Les configurations facultatives incluent l'ouverture automatique du navigateur, les paramètres de proxy, les chemins d'alias et les optimisations de l'emballage. Assurance recommandée

La construction d'une bibliothèque de composants Vue nécessite la conception de la structure autour du scénario d'entreprise et le suivi du processus complet de développement, de test et de libération. 1. La conception structurelle doit être classée en fonction des modules fonctionnels, y compris des composants de base, des composants de mise en page et des composants commerciaux; 2. Utilisez des variables SCSS ou CSS pour unifier le thème et le style; 3. Unifier les spécifications de dénomination et introduire Eslint et plus joli pour assurer le style de code cohérent; 4. Afficher l'utilisation des composants sur le site de document de support; 5. Utilisez VITE et d'autres outils pour emballer en tant que packages NPM et configurer les rolupoptions; 6. Suivez la spécification SEMVER pour gérer les versions et les modifications modifiées lors de la publication.

Vue3 s'est amélioré dans de nombreux aspects clés par rapport à Vue2. 1.Conde API fournit une méthode d'organisation logique plus flexible, permettant la gestion centralisée de la logique connexe, tout en prenant en charge l'API Options de Vue2; 2. De meilleures performances et une taille de package plus petite, la bibliothèque de base est réduite d'environ 30%, la vitesse de rendu est plus rapide et prend en charge une meilleure optimisation des shake d'arbre; 3. Le système réactif utilise ES6Proxy pour résoudre le problème de l'incapacité de suivre automatiquement l'addition d'attributs et la suppression dans Vue2, ce qui rend le mécanisme réactif plus naturel et cohérent; 4. Prise en charge intégrée intégrée pour TypeScript, prends en charge plusieurs fragments de n?uds et API de rendu personnalisé, améliorant la flexibilité et l'adaptabilité future. Dans l'ensemble, Vue3 est une mise à niveau en douceur vers Vue2,

La définition des itinéraires dans les projets Vue nécessite de comprendre la structure et la configuration. Les étapes sont les suivantes: 1. Installez et introduisez Vue-Router, créez une instance de routage et transmettez dans un tableau des routes contenant le chemin et le composant; 2. Utilisez la correspondance de routage dynamique telle que / user /: id pour obtenir des paramètres; 3. Utiliser l'attribut des enfants pour mettre en ?uvre les itinéraires imbriqués; 4. Nom des routes avec l'attribut de nom pour le saut; 5. Utilisez la redirection pour la redirection du chemin. Après avoir ma?trisé ces points de base, vous pouvez configurer efficacement le routage.

VueDevtools est une extension de navigateur pour déboguer les applications Vue.js, fournissant des fonctions de visualisation et d'édition en temps réel de la structure des composants, des accessoires, des données, etc. 1. Méthode d'installation: Recherchez "Vue.jsdevtools" dans Chrome ou Firefox Browser et ajouter des extensions; 2. Méthode Activer: Pendant le développement local, vous devez définir vue.config.devtools = true dans le fichier d'entrée; 3. Fonctions principales: visualisation des arbres de composants, accessoires et suivi des données, surveillance des événements, analyse du calendrier des performances; 4. Questions fréquemment posées: Assurez-vous un environnement de non-production, enregistrez correctement Vuexstore, utilisez une version bêta qui convient à Vue3 et essayez Elec indépendant
