Table des matières
HOC
FaCC
Différences
Résumé
Maison interface Web js tutoriel Explication détaillée des sous-composants fonctionnels et des composants d'ordre supérieur dans React

Explication détaillée des sous-composants fonctionnels et des composants d'ordre supérieur dans React

Sep 05, 2018 am 10:03 AM
javascript react.js

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
Copier après la connexion

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=&#39;demo-class&#39; />
)

// 使用
const Header = text => (<header>{text}</header>)
const headerWitheClass = withClassName(Header)
Copier après la connexion

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} />
    }
  }
}
Copier après la connexion

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>
)
Copier après la connexion

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 :

  1. É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))
Copier après la connexion
// FaCC example

import View from './View'

const DetailPage = props => (
  <FetchServerData>
    {
      data => (
        <Navigator>
          <View data={data} {...props} />
        </Navigator>
      )
    }
  </FetchServerData>
)
Copier après la connexion

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.

  1. 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.

  1. 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 pm 02:54 PM

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 mettre en œuvre des systèmes de surveillance en temps réel WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel Dec 17, 2023 pm 05:30 PM

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 mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 am 09:39 AM

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.

Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Dec 17, 2023 pm 12:09 PM

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 simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

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 : créer un système efficace de prévisions météorologiques en temps réel JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel Dec 17, 2023 pm 05:13 PM

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

Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

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

Comment utiliser insertBefore en javascript Comment utiliser insertBefore en javascript Nov 24, 2023 am 11:56 AM

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é).

See all articles