


Explication détaillée des sous-composants fonctionnels et des composants d'ordre supérieur dans React
Cet article vous apporte une explication détaillée des sous-composants fonctionnels et des composants d'ordre supérieur dans React. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Après être entré en contact avec les projets React, la plupart des gens devraient déjà avoir compris ou utilisé HOC (High-Order-Components) et FaCC (Functions as Child Components), car ces deux modèles sont largement utilisés. Ils existent dans la plupart réagir aux bibliothèques open source. Par exemple, withRouter dans React-Router est un composant d'ordre élevé typique, qui accepte un composant et renvoie un autre composant amélioré. Le mouvement en réaction-motion est une application FaCC typique.
HOC et FaCC font des choses très similaires, les deux sont similaires au modèle de décorateur dans le modèle de conception. Toutes les fonctions sont améliorées sur les instances ou unités d'origine.
Bien sûr, il n'est pas seulement utilisé dans certaines bibliothèques open source, mais aussi dans l'écriture de code quotidienne, il existe de nombreux endroits où il convient d'utiliser HOC et FaCC pour encapsuler une certaine logique. Par exemple, les points d'enfouissement des données, l'activation de nouvelles fonctionnalités, l'obtention de données de conversion, etc. Très utile pour améliorer la lisibilité du code et la réutilisation de la logique.
HOC
Nous avons tous utilisé des fonctions d'ordre supérieur, qui acceptent une fonction et renvoient une fonction encapsulée :
const plus = first => second => (first + second) plus(1)(2) // 3
Et les composants d'ordre supérieur sont d'ordre élevé fonctions Le concept est appliqué aux composants d'ordre supérieur :
const withClassName = ComposedComponent => props => ( <ComposedComponent {...props} className='demo-class' /> ) // 使用 const Header = text => (<header>{text}</header>) const headerWitheClass = withClassName(Header)
accepte un composant et renvoie un nouveau composant enveloppé. Le withRouter
que nous utilisons souvent consiste à ajouter des attributs tels que props
au composant d'origine localtion
. En plus d'ajouter des accessoires, les composants d'ordre élevé peuvent également :
Faire certaines choses avant et après avoir réellement appelé le composant, comme enterrer des données, etc.
Déterminez si le composant doit être rendu ou doit restituer d'autres choses, comme le rendu de la page d'erreur après une erreur
-
Passer les accessoires et ajouter de nouveaux accessoires
Au lieu de restituer le composant, faites d'autres choses, comme le rendu d'un dom externe
Les trois premiers points ci-dessus sont relativement faciles à comprendre s'il vous plaît. expliquez le quatrième point. Par exemple, après avoir rendu une page, vous devez modifier le titre de la page. Il s'agit d'une exigence courante pour les applications monopage. Vous pouvez généralement utiliser des hooks dans une bibliothèque de routeur spécifique pour y parvenir. Bien sûr, cela peut également être réalisé via HOC :
const withTitleChange = ComposedComponent => { return class extends React.Component { componentDidMount () { const { title } = this.props document.title = title } render () { const props = this.props return <ComposedComponent {...props} /> } } }
FaCC
De même, FaCC est également un mode utilisé pour améliorer les capacités des composants d'origine. Sa fonction principale est implémentée dans React. props.children Peut être n'importe quoi, y compris les fonctions. Nous pouvons prendre l'exemple de classe ci-dessus et l'implémenter à nouveau avec FaCC :
const ClassNameWrapper = ({ children }) => children('demo-class') // 使用 const HeadWithClass = (props) => ( <ClassNameWrapper> {(class) => <header classNmae={class} ></header>} </ClassNameWrapper> )
Dans FaCC, vous pouvez également faire beaucoup de choses dans le cycle de vie comme HOC pour encapsuler les composants d'origine. Fondamentalement, HOC peut être fait. faire tout ce que fait FaCC. Le projet sur lequel je travaillais utilisait HOC à grande échelle. Après quelques discussions, il a commencé à se transformer en FaCC à grande échelle.
Différences
Les deux sont utilisés pour améliorer les composants d'origine. Lequel faut-il utiliser ? Quel est le bon modèle ? Il y a beaucoup de discussions à ce sujet dans la communauté. Par exemple, certaines personnes disent que FaCC est un anti-modèle : Function as Child Components Are an Anti-Pattern. La raison qu'il a donnée était que les enfants n'étaient pas sémantiques et pourraient prêter à confusion. Il a ensuite proposé le modèle Component Injection
, que les étudiants intéressés peuvent lire.
Faisons une comparaison sous plusieurs aspects :
Étape de composition
L'étape de combinaison signifie HOC, FaCC et When combinant composants améliorés. On constate clairement que FaCC affiche davantage d'informations de dépendance sur l'amarrage des composants avant et arrière, ce qui est relativement plus facile à comprendre. Quant à HOC, comment se relier les uns aux autres ? Vous devez approfondir le HOC et lire le code pour savoir ce que fait ce HOC.
// HOC example import View from './View' const DetailPage = withServerData(withNavigator(View))
// FaCC example import View from './View' const DetailPage = props => ( <FetchServerData> { data => ( <Navigator> <View data={data} {...props} /> </Navigator> ) } </FetchServerData> )
Si vous ajoutez 2 HOC supplémentaires par-dessus, le processus de combinaison ci-dessus deviendra très moche. Relativement parlant, avec FaCC, la manière dont il est encapsulé, l'origine de la source de données et les données que le composant reçoit sont tous plus visibles.
Optimisation des performances
Dans HOC, nous pouvons recevoir des accessoires de l'hôte, car les accessoires sont transmis par HOC, nous avons donc également Pour le cycle de vie complet, nous pouvons utiliser l'optimisation ShouldComponentUpdate. Ce n'est pas le cas de FaCC, qui ne peut pas comparer les accessoires en interne. Ce n'est que lors de la combinaison d'un composant externe que les accessoires peuvent être comparés.
Flexibilité
FaCC est plus flexible que HOC dans la phase de combinaison. Il ne précise pas comment le composant amélioré utilise les attributs qu'il transmet. . Le HOC est essentiellement finalisé après sa rédaction.
De plus, FaCC ne créera pas de nouveau composant, tandis que HOC créera un nouveau composant et lui transmettra des accessoires.
Résumé
De nombreuses bibliothèques open source de la communauté ont utilisé les deux modes, et de nombreux articles les comparent. Il y a eu également de nombreuses discussions animées et, bien sûr, les deux modèles ont permis de résoudre définitivement le problème. En raison de différentes considérations, le choix peut être différent.
Recommandations associées :
Analyse des instances de composants d'ordre élevé React
Instances de composants contrôlés et non contrôlés dans React Explication détaillée
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

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.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

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

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de réservation en ligne. À l'ère numérique d'aujourd'hui, de plus en plus d'entreprises et de services doivent fournir des fonctions de réservation en ligne. Il est crucial de mettre en place un système de réservation en ligne efficace et en temps réel. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de réservation en ligne et fournit des exemples de code spécifiques. 1. Qu'est-ce que WebSocket ? WebSocket est une méthode full-duplex sur une seule connexion TCP.

Introduction à l'utilisation de JavaScript et de WebSocket pour mettre en œuvre un système de commande en ligne en temps réel : avec la popularité d'Internet et les progrès de la technologie, de plus en plus de restaurants ont commencé à proposer des services de commande en ligne. Afin de mettre en œuvre un système de commande en ligne en temps réel, nous pouvons utiliser les technologies JavaScript et WebSocket. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut réaliser une communication bidirectionnelle en temps réel entre le client et le serveur. Dans le système de commande en ligne en temps réel, lorsque l'utilisateur sélectionne des plats et passe une commande

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

Utilisation : En JavaScript, la méthode insertBefore() est utilisée pour insérer un nouveau nœud dans l'arborescence DOM. Cette méthode nécessite deux paramètres : le nouveau nœud à insérer et le nœud de référence (c'est-à-dire le nœud où le nouveau nœud sera inséré).
