Maison >interface Web >js tutoriel >Partager des exemples de démarrage avec les composants d'ordre supérieur de React

Partager des exemples de démarrage avec les composants d'ordre supérieur de React

小云云
小云云original
2018-01-13 09:19:541476parcourir

Cet article présente principalement l'introduction aux composants d'ordre élevé de React. Dans cet article, nous présentons en détail ce que sont les composants d'ordre élevé et comment les utiliser. L'éditeur pense que c'est plutôt bien. je le partagerai avec vous et le partagerai avec tout le monde. Soyez une référence. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

Définition des composants d'ordre supérieur

HoC n'est pas une API de React. C'est un modèle d'implémentation, qui est essentiellement une fonction qui. accepte Un ou plusieurs composants React sont utilisés comme paramètres et renvoient un tout nouveau composant React au lieu de modifier le composant existant. Ces composants sont appelés composants d'ordre supérieur. Pendant le processus de développement, lorsque certaines fonctions doivent être réutilisées dans plusieurs classes de composants, un Hoc peut être créé.

Utilisation de base

Méthode d'emballage


const HoC = (WrappendComponent) => {
 const WrappingComponent = (props) => (
  <p className="container">
   <WrappendComponent {...props} />
  </p>
 );
 return WrappingComponent;
};

Ci-dessus Dans le code, WrappingComponent est accepté comme paramètre. Ce paramètre est le composant ordinaire à encapsuler par HoC. Enveloppez un p dans le rendu et donnez-lui l'attribut className résultant et le WrappendComponent transmis sont deux composants complètement différents.

Dans WrappingComponent, vous pouvez lire, ajouter, modifier et supprimer les accessoires transmis à WrappendComponent. Vous pouvez également envelopper WrappendComponent avec d'autres éléments pour implémenter des styles d'encapsulation, ajouter une mise en page ou d'autres opérations.

Méthode de combinaison


const HoC = (WrappedComponent, LoginView) => {
 const WrappingComponent = () => {
  const {user} = this.props; 
  if (user) {
   return <WrappedComponent {...this.props} />
  } else {
   return <LoginView {...this.props} />
  }
 };
 return WrappingComponent;
};

Il y a deux composants dans le code ci-dessus, WrappedComponent et LoginView, si les accessoires sont transmis Si l'utilisateur existe, le composant WrappedComponent sera affiché normalement, sinon le composant LoginView sera affiché pour permettre à l'utilisateur de se connecter. Les paramètres transmis par HoC peuvent être multiples. Transmettez plusieurs composants pour personnaliser le comportement du nouveau composant. Par exemple, la page principale s'affiche lorsque l'utilisateur est connecté et l'interface de connexion s'affiche lorsque l'utilisateur n'est pas connecté. Lors du rendu de la liste, transmettez les composants List et Loading pour ajouter le nouveau comportement de chargement.

Méthode d'héritage


const HoC = (WrappendComponent) => {
 class WrappingComponent extends WrappendComponent {
  render() (
   const {user, ...otherProps} = this.props;
   this.props = otherProps;
   return super.render();
  }
 }
 return WrappingComponent;
};

WrappingComponent est un nouveau composant qui hérite de WrappendComponent et partage les fonctions et propriétés du parent . Vous pouvez utiliser super.render() ou super.componentWillUpdate() pour appeler la fonction de cycle de vie du parent, mais cela couplera les deux composants ensemble et réduira la réutilisation du composant.

Le packaging des composants dans React est basé sur l'idée de la plus petite unité disponible. Idéalement, un composant ne fait qu'une seule chose, ce qui est conforme au principe de responsabilité unique de la POO. Si vous devez améliorer les fonctionnalités d'un composant, améliorez le composant en le combinant ou en ajoutant du code au lieu de modifier le code d'origine.

Notes

Ne pas utiliser de composants d'ordre supérieur dans la fonction de rendu


render() {
 // 每一次render函数调用都会创建一个新的EnhancedComponent实例
 // EnhancedComponent1 !== EnhancedComponent2
 const EnhancedComponent = enhance(MyComponent);
 // 每一次都会使子对象树完全被卸载或移除
 return <EnhancedComponent />;
}

L'algorithme de comparaison dans React compare l'ancienne et la nouvelle arborescence de sous-objets pour déterminer s'il faut mettre à jour l'arborescence de sous-objets existante ou supprimer le sous-arbre existant et le remonter.

Les méthodes statiques doivent être copiées


// 定义静态方法
WrappedComponent.staticMethod = function() {/*...*/}
// 使用高阶组件
const EnhancedComponent = enhance(WrappedComponent);

// 增强型组件没有静态方法
typeof EnhancedComponent.staticMethod === &#39;undefined&#39; // true

L'attribut Refs ne peut pas être transmis

spécifié dans la référence HoC ne sera pas transmis au composant enfant et doit être transmis à l'aide d'accessoires via la fonction de rappel.

Recommandations associées :

Utiliser Store pour optimiser la communication entre les composants React

Exemples de communication entre les composants React Tutoriel

Comparaison des balises HTML et des composants React_html/css_WEB-ITnose


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:
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