Inhaltsverzeichnis
Component und PureComponent haben einen Unterschied
Flache Vergleich 101
Niemals ändern
Haben Sie Leistungsprobleme?
Keine Werte in der Renderfunktion binden
Leiten Sie keine Daten in der Render-Methode ab
Heim Web-Frontend js-Tutorial Detaillierte Erläuterung des Unterschieds zwischen Component und PureComponent

Detaillierte Erläuterung des Unterschieds zwischen Component und PureComponent

May 24, 2018 pm 03:44 PM
component 详解

Dieses Mal werde ich Ihnen den Unterschied zwischen der Verwendung von Component und PureComponent ausführlich erläutern. Was sind die Vorsichtsmaßnahmen bei der Verwendung von Component und PureComponent? Schauen Sie mal rein.

Ich fing an, auf PureCompoent umzusteigen, weil es eine leistungsfähigere Version von Component war. Obwohl sich herausstellt, dass dies wahr ist, ist diese Leistungssteigerung mit einigen Einschränkungen verbunden. Lassen Sie uns etwas tiefer in PureComponent eintauchen und verstehen, warum wir es verwenden sollten.

Component und PureComponent haben einen Unterschied

Bis auf die Bereitstellung einer shouldComponentUpdate-Methode mit flachem Vergleich sind PureComponent und Component grundsätzlich identisch. Wenn sich entweder props oder state ändert, führt PureComponent einen flachen Vergleich zwischen props und state durch. Andererseits vergleicht Component nicht props und state im aktuellen und nächsten Status. Daher wird die Komponente bei jedem Aufruf von shouldComponentUpdate standardmäßig neu gerendert.

Flache Vergleich 101

Beim Vergleich des vorherigen und nächsten props und state prüft der flache Vergleich, ob der ursprüngliche Wert den gleichen Wert hat (zum Beispiel: 1 == 1 oder ture==true), ob das Array und die -Objekt--Referenz identisch sind.

Niemals ändern

Sie haben vielleicht gehört: Ändern Sie keine Objekte und Arrays in props und state. Wenn Sie Objekte in Ihrer übergeordneten Komponente ändern, werden dies auch Ihre „reinen“ Unterkomponenten tun nicht aktualisiert werden. Obwohl der Wert geändert wurde, vergleicht die Unterkomponente, ob die vorherige Referenz von props dieselbe ist, und es wird kein tiefer Vergleich durchgeführt.

Im Gegensatz dazu können Sie ein neues Objekt zurückgeben, indem Sie die es6-Zuweisungsmethode oder den Array-Erweiterungsoperator verwenden oder eine Bibliothek eines Drittanbieters verwenden, um Unveränderlichkeit zu erreichen.

Haben Sie Leistungsprobleme?

Der Vergleich von Grundwerten und Objektreferenzen ist ein kostengünstiger Vorgang. Wenn Sie eine Liste mit untergeordneten Objekten haben und eines davon aktualisiert wird, ist die Überprüfung ihrer props und state viel schneller als das erneute Rendern jedes untergeordneten Knotens

Andere Lösungen Lösung

Keine Werte in der Renderfunktion binden

Angenommen, Sie haben eine Liste von Elementen und jedem Element wird ein eindeutiger Parameter an die übergeordnete Methode übergeben. Um Parameter zu binden, können Sie Folgendes tun:

<CommentItem likeComment={() => this.likeComment(user.id)} />
Nach dem Login kopieren

Dieses Problem führt dazu, dass jedes Mal, wenn die Rendermethode der übergeordneten Komponente aufgerufen wird, eine neue Funktion erstellt und an likeComment übergeben wird. Dies hat den Nebeneffekt, dass jede untergeordnete Komponente props geändert wird, was dazu führt, dass sie alle neu gerendert werden, auch wenn sich die Daten selbst nicht geändert haben.

Um dieses Problem zu lösen, übergeben Sie einfach einen Verweis auf die Prototypmethode der übergeordneten Komponente an die untergeordnete Komponente. Die likeComment-Eigenschaft der untergeordneten Komponente hat immer die gleiche Referenz, sodass keine unnötigen erneuten Renderings erforderlich sind.

<CommentItem likeComment={this.likeComment} userID={user.id} />
Nach dem Login kopieren

Erstellen Sie dann eine Klassenmethode in der untergeordneten Komponente, die auf das eingehende Attribut verweist:

class CommentItem extends PureComponent {
  ...
  handleLike() {
    this.props.likeComment(this.props.userID)
  }
  ...
}
Nach dem Login kopieren

Leiten Sie keine Daten in der Render-Methode ab

Überlegen Sie, wie Ihre Konfigurationskomponente angezeigt wird Die zehn Lieblingsartikel des Benutzers aus einer Artikelserie.

render() {
  const { posts } = this.props
  const topTen = posts.sort((a, b) => b.likes - a.likes).slice(0, 9)
  return //...
}
Nach dem Login kopieren

Jedes Mal, wenn die Komponente erneut gerendert wird, erhält topTen eine neue Referenz, auch wenn sich posts nicht geändert hat und die abgeleiteten Daten dieselben sind. Dadurch wird die Liste unnötig neu gerendert.

Sie können dieses Problem lösen, indem Sie Ihre abgeleiteten Daten zwischenspeichern. Legen Sie beispielsweise die abgeleiteten Daten in Ihrer Komponente state so fest, dass sie nur aktualisiert werden, wenn Beiträge aktualisiert werden.

componentWillMount() {
  this.setTopTenPosts(this.props.posts)
}
componentWillReceiveProps(nextProps) {
  if (this.props.posts !== nextProps.posts) {
    this.setTopTenPosts(nextProps)
  }
}
setTopTenPosts(posts) {
  this.setState({
    topTen: posts.sort((a, b) => b.likes - a.likes).slice(0, 9)
  })
}
Nach dem Login kopieren

Wenn Sie Redux verwenden, sollten Sie die Verwendung von „reselect“ in Betracht ziehen, um „Selektoren“ zu erstellen, um abgeleitete Daten zu kombinieren und zwischenzuspeichern.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website.

Empfohlene Lektüre:

Detaillierte Erläuterung der Lebenszyklusnutzung in React

Detaillierte Erläuterung der Komponentenkommunikationsnutzung in React

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Unterschieds zwischen Component und PureComponent. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Detaillierte Erläuterung der Modusfunktion in C++ Detaillierte Erläuterung der Modusfunktion in C++ Nov 18, 2023 pm 03:08 PM

Detaillierte Erläuterung der Modusfunktion in C++ In der Statistik bezieht sich der Modus auf den Wert, der in einem Datensatz am häufigsten vorkommt. In der Sprache C++ können wir den Modus in jedem Datensatz finden, indem wir eine Modusfunktion schreiben. Die Modusfunktion kann auf viele verschiedene Arten implementiert werden. Zwei der häufig verwendeten Methoden werden im Folgenden ausführlich vorgestellt. Die erste Methode besteht darin, eine Hash-Tabelle zu verwenden, um die Häufigkeit des Vorkommens jeder Zahl zu zählen. Zuerst müssen wir eine Hash-Tabelle definieren, in der jede Zahl der Schlüssel und die Häufigkeit des Vorkommens der Wert ist. Dann führen wir für einen bestimmten Datensatz aus

Ausführliche Erklärung zur Erlangung von Administratorrechten in Win11 Ausführliche Erklärung zur Erlangung von Administratorrechten in Win11 Mar 08, 2024 pm 03:06 PM

Das Windows-Betriebssystem ist eines der beliebtesten Betriebssysteme der Welt und seine neue Version Win11 hat viel Aufmerksamkeit erregt. Im Win11-System ist die Erlangung von Administratorrechten ein wichtiger Vorgang. Mit Administratorrechten können Benutzer weitere Vorgänge und Einstellungen auf dem System durchführen. In diesem Artikel wird ausführlich beschrieben, wie Sie Administratorrechte im Win11-System erhalten und wie Sie Berechtigungen effektiv verwalten. Im Win11-System werden Administratorrechte in zwei Typen unterteilt: lokaler Administrator und Domänenadministrator. Ein lokaler Administrator verfügt über vollständige Administratorrechte für den lokalen Computer

Detaillierte Erläuterung der Restfunktion in C++ Detaillierte Erläuterung der Restfunktion in C++ Nov 18, 2023 pm 02:41 PM

Detaillierte Erläuterung der Restfunktion in C++ In C++ wird der Restoperator (%) verwendet, um den Rest der Division zweier Zahlen zu berechnen. Es handelt sich um einen binären Operator, dessen Operanden ein beliebiger Ganzzahltyp (einschließlich char, short, int, long usw.) oder ein Gleitkommazahlentyp (z. B. float, double) sein kann. Der Restoperator gibt ein Ergebnis mit demselben Vorzeichen wie der Dividend zurück. Für die Restoperation von Ganzzahlen können wir beispielsweise den folgenden Code zur Implementierung verwenden: inta=10;intb=3;

Detaillierte Erläuterung der Divisionsoperation in Oracle SQL Detaillierte Erläuterung der Divisionsoperation in Oracle SQL Mar 10, 2024 am 09:51 AM

Detaillierte Erläuterung der Divisionsoperation in OracleSQL In OracleSQL ist die Divisionsoperation eine häufige und wichtige mathematische Operation, die zur Berechnung des Ergebnisses der Division zweier Zahlen verwendet wird. Division wird häufig in Datenbankabfragen verwendet. Daher ist das Verständnis der Divisionsoperation und ihrer Verwendung in OracleSQL eine der wesentlichen Fähigkeiten für Datenbankentwickler. In diesem Artikel werden die relevanten Kenntnisse über Divisionsoperationen in OracleSQL ausführlich erörtert und spezifische Codebeispiele als Referenz für die Leser bereitgestellt. 1. Divisionsoperation in OracleSQL

Detaillierte Erläuterung der Verwendung der Vue.nextTick-Funktion und ihrer Anwendung bei asynchronen Updates Detaillierte Erläuterung der Verwendung der Vue.nextTick-Funktion und ihrer Anwendung bei asynchronen Updates Jul 26, 2023 am 08:57 AM

Detaillierte Erläuterung der Verwendung der Vue.nextTick-Funktion und ihrer Anwendung bei asynchronen Aktualisierungen. Bei der Vue-Entwicklung treten häufig Situationen auf, in denen Daten asynchron aktualisiert werden müssen. Beispielsweise müssen Daten sofort nach einer Änderung des DOM oder verwandter Vorgänge aktualisiert werden unmittelbar nach der Aktualisierung der Daten durchzuführen. Die von Vue bereitgestellte Funktion .nextTick wurde entwickelt, um diese Art von Problem zu lösen. In diesem Artikel wird die Verwendung der Vue.nextTick-Funktion im Detail vorgestellt und mit Codebeispielen kombiniert, um ihre Anwendung bei asynchronen Updates zu veranschaulichen. 1. Vue.nex

Detaillierte Erläuterung der PHP-FPM-Optimierungsmethode Detaillierte Erläuterung der PHP-FPM-Optimierungsmethode Jul 08, 2023 pm 04:31 PM

PHP-FPM ist ein häufig verwendeter PHP-Prozessmanager, der eine bessere PHP-Leistung und -Stabilität bietet. In einer Hochlastumgebung erfüllt die Standardkonfiguration von PHP-FPM jedoch möglicherweise nicht die Anforderungen, sodass wir sie optimieren müssen. In diesem Artikel wird die Optimierungsmethode von PHP-FPM ausführlich vorgestellt und einige Codebeispiele gegeben. 1. Erhöhen Sie die Anzahl der Prozesse. Standardmäßig startet PHP-FPM nur eine kleine Anzahl von Prozessen, um Anfragen zu bearbeiten. In einer Hochlastumgebung können wir die Parallelität von PHP-FPM erhöhen, indem wir die Anzahl der Prozesse erhöhen.

Detaillierte Erläuterung der Rolle und Verwendung des PHP-Modulo-Operators Detaillierte Erläuterung der Rolle und Verwendung des PHP-Modulo-Operators Mar 19, 2024 pm 04:33 PM

Der Modulo-Operator (%) in PHP wird verwendet, um den Rest der Division zweier Zahlen zu ermitteln. In diesem Artikel werden wir die Rolle und Verwendung des Modulo-Operators im Detail besprechen und spezifische Codebeispiele bereitstellen, um den Lesern ein besseres Verständnis zu erleichtern. 1. Die Rolle des Modulo-Operators Wenn wir in der Mathematik eine ganze Zahl durch eine andere ganze Zahl dividieren, erhalten wir einen Quotienten und einen Rest. Wenn wir beispielsweise 10 durch 3 dividieren, ist der Quotient 3 und der Rest ist 1. Um diesen Rest zu ermitteln, wird der Modulo-Operator verwendet. 2. Verwendung des Modulo-Operators In PHP verwenden Sie das %-Symbol, um den Modul darzustellen

Detaillierte Erläuterung der Funktion system() des Linux-Systemaufrufs Detaillierte Erläuterung der Funktion system() des Linux-Systemaufrufs Feb 22, 2024 pm 08:21 PM

Detaillierte Erläuterung der Funktion system() des Linux-Systems Der Systemaufruf ist ein sehr wichtiger Teil des Linux-Betriebssystems. Er bietet eine Möglichkeit, mit dem Systemkernel zu interagieren. Unter diesen ist die Funktion system() eine der am häufigsten verwendeten Systemaufruffunktionen. In diesem Artikel wird die Verwendung der Funktion system() ausführlich vorgestellt und entsprechende Codebeispiele bereitgestellt. Grundlegende Konzepte von Systemaufrufen Systemaufrufe sind eine Möglichkeit für Benutzerprogramme, mit dem Betriebssystemkernel zu interagieren. Benutzerprogramme fordern das Betriebssystem an, indem sie Systemaufruffunktionen aufrufen

See all articles