


Detaillierte Erläuterung des Unterschieds zwischen Component und PureComponent
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)} />
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} />
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) } ... }
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 //... }
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) }) }
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

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

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

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.

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