Heim > Web-Frontend > js-Tutorial > Beispiele für die Verwendung von Komponenten höherer Ordnung in React

Beispiele für die Verwendung von Komponenten höherer Ordnung in React

不言
Freigeben: 2018-11-15 17:23:49
nach vorne
2215 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit den Verwendungsbeispielen von High-Level-Komponenten in React. Ich hoffe, dass er für Freunde hilfreich ist.

Komponenten höherer Ordnung

  • HOC ist keine Standard-API von React.

  • HOC ist eine Funktion.

  • HOC gibt ein Component zurück.

Beispiel:

const EnhancedComponent = higherOrderComponent(WrappedComponent);
Nach dem Login kopieren

Nutzungsszenario

Code-Wiederverwendung

Ähnlich dem Mixin vor React 0.15.

HOC kann verwendet werden, wenn mehrere Komponenten denselben Code oder dieselbe Methode verwenden.

Beispiel:

import React, { PureComponent } from 'react';

const Common = (WrapComponent) => {
  return (
    <div>
      <h1>Title</h1>
      <WrapComponent />
    </div>
  );
};

const Header = () => <div>Header</div>;
const Footer = () => <div>Footer</div>;

export default class extends PureComponent {
  render() {
    return (
      <div>
        <div>
          <p>Header Component</p>
          {Common(Header)}
        </div>
        <hr />
        <div>
          <p>Footer Component</p>
          {Common(Footer)}
        </div>
      </div>
    );
  }
}
Nach dem Login kopieren

Online-Beispiel

Abstrakte Zustands- und Änderungs-Requisiten

können umschlossen werden WrappedComponent Der öffentliche Zustand der Komponenten wird abstrahiert.

Requisiten für Änderungen, Hinzufügungen usw. können durch die von WrappedComponent verpackte Komponente weitergeleitet werden.

Beispiel:

const HOComp = (WrappedComponent) => {
  return class extends React.Component {
    constructor(props) {
      super(props);
      this.state = {name: ''};
    }

    componentDidMount() {
      this.setState({name: WrappedComponent.displayName || WrappedComponent.name || 'Component';});
    }

    return <WrappedComponent name={this.state.name} {...this.props}/>
  }
}
Nach dem Login kopieren

Rendering-Hijack

Bedingtes Rendering. Geben Sie den Inhalt in Xuanran basierend auf Requisiten oder staatlichen Bedingungen zurück.

Beispiel:

const HOComp = (WrappedComponent) => {
  return class Enhancer extends WrappedComponent {
    render() {
      if (this.props.loggedIn) {
        return super.render()
      } else {
        return null
      }
    }
  }
}
Nach dem Login kopieren

Umgekehrte Vererbung

Die zurückgegebene Komponentenklasse höherer Ordnung (Enhancer) erbt WrappedComponent.

Beispiel:

const EnchanceComponent = (WrappedCompopnent) => {
  return class extends WrappedCompopnent {
    constructor(props) {
      super(props);
      this.state = { error: '' };
    }
    componentDidMount() {
      /*do something*/
      super.componentDidMount();
    }
    render() {
      if (this.state.error) {
        return <p>{this.state.error}</p>;
      } else {
        return super.render();
      }
    }
  }
};
Nach dem Login kopieren

Online-Beispiel

Das obige ist der detaillierte Inhalt vonBeispiele für die Verwendung von Komponenten höherer Ordnung in React. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage