


Welche Leistungsoptimierungen wurden an Reaktionskomponenten vorgenommen?
Die Komponentenleistungsoptimierung von React umfasst: 1. Verwenden Sie so viele zustandslose Funktionen wie möglich, um Komponenten zu erstellen. 2. Teilen Sie Komponenten in Unterkomponenten auf, um eine detailliertere Kontrolle über Komponenten zu erhalten. 3. Verwenden Sie PureRender, um das Rendern von Änderungen zu minimieren . Unveränderlich verwenden.
Zu den Komponentenleistungsoptimierungen von React gehören:
1. Verwenden Sie so viele zustandslose Funktionen wie möglich, um Komponenten zu erstellen.
Zustandslose Komponenten haben nur zwei Parameter: Requisiten und Kontext. Es gibt keinen Status und keine Lebenszyklusmethode. Die Komponente selbst ist die Rendermethode in der zustandsbehafteten Komponentenkonstruktionsmethode.
Zustandslose Komponenten sollten verwendet werden, wo immer dies sinnvoll ist. Zustandslose Komponenten erstellen beim Aufruf keine neuen Instanzen wie React.createClass und ES6-Klasse. Sie behalten beim Erstellen immer eine Instanz bei, wodurch unnötige Überprüfungen und Speicherzuweisungen vermieden und eine interne Optimierung erreicht werden.
2. Teilen Sie die Komponente in Unterkomponenten auf und haben Sie eine detailliertere Kontrolle über die Komponente.
Verwandte wichtige Konzepte: Reine Funktion Gibt immer die gleiche Ausgabe zurück: Gegenbeispiele sind beispielsweise Math.random(), New Date()
Der Prozess hat keine Nebenwirkungen: das heißt, er kann den externen Zustand nicht ändern
Es gibt keine zusätzliche Zustandsabhängigkeit: das heißt , der Zustand innerhalb der Methode kann nur während des Lebenszyklus der Methode existieren Speicher wird gespeichert, was bedeutet, dass gemeinsam genutzte Variablen nicht innerhalb von Methoden verwendet werden können.
Reine Funktionen sind sehr praktisch für Tests und Refactoring auf Methodenebene. Dadurch kann das Programm eine gute Skalierbarkeit und Anpassungsfähigkeit aufweisen. Reine Funktionen sind die Grundlage für funktionale Ausdrücke.
Die React-Komponente selbst ist eine reine Funktion, das heißt, sie übergibt die angegebenen Requisiten, um ein bestimmtes virtuelles DOM zu erhalten, und der gesamte Prozess ist vorhersehbar.
Spezifische Methode
Teilen Sie die Komponente in Unterkomponenten auf, um eine detailliertere Kontrolle über die Komponenten zu erhalten. Durch die Aufrechterhaltung eines reinen Zustands können Methoden oder Komponenten fokussierter, kleiner, unabhängiger, wiederverwendbarer und testbarer werden.
3. Verwenden Sie PureRender, um das Rendern von Änderungen zu minimierenVerwandte wichtige Konzepte: PureRender
Pure bezieht sich in PureRender auf die Erfüllung der Bedingungen reiner Funktionen, d. h. Komponenten werden von denselben verwendet Requisiten und Zustandsrendering erzielen das gleiche Ergebnis.
Die Implementierung von PureRender in React erfordert die Neuimplementierung der Lebenszyklusmethode ShouldComponentUpdate. ShouldComponentUpdate ist eine spezielle Methode, die die zu aktualisierenden Requisiten und Zustände empfängt. Ihr Kern besteht darin, eine korrekte Komponentenwiedergabe durchzuführen. Wenn sie „false“ zurückgibt, wird die Lebenszyklusmethode nicht mehr nach unten ausgeführt; wenn sie „true“ zurückgibt, wird die Ausführung nach unten fortgesetzt. PureRender
PureRender的Pure即是指满足纯函数的条件,即组件被相同的props和state渲染会得到相同的结果。
在React中实现PureRender需要重新实现shouldComponentUpdate生命周期方法。shouldComponentUpdate是一个特别的方法,它接收需要更新的props和state,其本质是用来进行正确的组件渲染。当其返回false的时候,不再向下执行生命周期方法;当其返回true时,继续向下执行。
组件在初始化过程中会渲染一个树状结构,当父节点props改变的时候,在理想情况下只需渲染一条链路上有关props改变的节点即可;但是,在默认情况下shouldComponentUpdate方法返回true,React会重新渲染所有的节点。
有一些官方插件实现了对shouldComponentUpdate
的重写,然后自己也可以做一些代码的优化来运用PureRender。
具体办法
(1) 运用PureRender
使用官方插件react-addons-pure-render-mixin实现对shouldComponentUpdate
的重写
import React from 'react'; import PureRenderMixin from 'react-addons-pure-render-mixin'; class App extends React.Component { constructor(props) { super(props); this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this); } render() { return <div className={this.props.className}>foo</div> } }
它的原理是对object(包括props和state)做浅比较,即引用比较,非值比较。比如只用关注props中每一个是否全等(如果是prop是一个对象那就是只比较了地址,地址一样就算是一样了),而不用深入比较。
(2)优化PureRender
避免无论如何都会触发shouldComponentUpdate
返回true的代码写法。
避免直接为prop设置字面量的数组和对象
就算每次传入的数组或对象的值没有变,但它们的地址也发生了变化。
如以下写法每次渲染时style都是新对象都会触发shouldComponentUpdate为true:
<Account style={{color: 'black'}} />
改进办法:将字面量设置为一个引用:
const defaultStyle = {}; <Account style={this.props.style || defaultStyle} />
避免每次都绑定事件
如果这样绑定事件的话每次都要生成一个新的onChange
属性的值:
render() { return <input onChange={this.handleChange.bind(this)} /> }
应该尽量在构造函数内进行绑定,如果绑定需要传参那么应该考虑抽象子组件或改变现有数据结构:
constructor(props) { super(props); this.handleChange = this.handleChange.bind(this); } handleChange() { ... } render() { return <input onChange={this.handleChange} /> }
在设置子组件的时候要在父组件级别重写shouldComponentUpdate
4.运用immutable
JavaScript中对象一般是可变的,因为使用引用赋值,新的对象的改变将影响原始对象。为了解决这个问题是使用深拷贝或者浅拷贝,但这样做又造成了CPU和内存的浪费。
Immutable data
shouldComponentUpdate
implementieren, und dann können Sie auch einige Codeoptimierungen durchführen, um PureRender zu verwenden. 🎜🎜Spezifische Methode🎜🎜(1) Verwenden Sie PureRender
🎜🎜Verwenden Sie das offizielle Plug-in „react-addons-pure-render-mixin“, um shouldComponentUpdate
neu zu schreiben🎜rrreee🎜It The Das Prinzip besteht darin, einen oberflächlichen Vergleich von Objekten (einschließlich Requisiten und Status) durchzuführen, dh einen Referenzvergleich und einen Nichtwertvergleich. Sie müssen beispielsweise nur darauf achten, ob die einzelnen Requisiten übereinstimmen (wenn es sich bei der Requisite um ein Objekt handelt, wird nur die Adresse verglichen, und dieselbe Adresse wird als gleich betrachtet), ohne einen detaillierten Vergleich durchzuführen. 🎜🎜(2) Optimieren Sie PureRender
🎜🎜Vermeiden Sie das Schreiben von Code, der shouldComponentUpdate
auslöst, um auf jeden Fall „true“ zurückzugeben. 🎜🎜Vermeiden Sie es, literale Arrays und Objekte direkt für prop festzulegen🎜🎜Auch wenn sich der Wert des übergebenen Arrays oder Objekts nicht jedes Mal ändert, haben sich auch deren Adressen geändert. 🎜🎜Wenn es sich bei dem Stil um ein neues Objekt handelt, das wie folgt geschrieben ist, wird ShouldComponentUpdate jedes Mal, wenn es gerendert wird, als wahr ausgelöst:🎜rrreee🎜Verbesserungsmethode: Setzen Sie das Literal auf eine Referenz:🎜rrreee🎜Vermeiden Sie die Bindung des Ereignisses jedes Mal🎜 🎜Wenn Sie es so binden: Für Ereignisse muss jedes Mal ein neuer Wert des onChange
-Attributs generiert werden: 🎜rrreee🎜 Sie sollten versuchen, die Bindung innerhalb des Konstruktors durchzuführen, wenn die Bindung die Übergabe von Parametern erfordert Ziehen Sie in Betracht, Unterkomponenten zu abstrahieren oder den aktuellen Status zu ändern:🎜rrreee🎜Wenn Sie untergeordnete Komponenten einrichten, schreiben Sie shouldComponentUpdate
auf der Ebene der übergeordneten Komponente neu🎜🎜🎜4 JavaScript ist aufgrund der Verwendung von Referenzzuweisungen im Allgemeinen veränderbar. Änderungen am neuen Objekt wirken sich auf das ursprüngliche Objekt aus. Um dieses Problem zu lösen, wird Deep Copy oder Shallow Copy verwendet, was jedoch zu einer Verschwendung von CPU und Speicher führt. 🎜🎜Unveränderliche Daten
löst dieses Problem sehr gut. 🎜Unveränderliche Daten sind Daten, die nach ihrer Erstellung nicht mehr geändert werden können. Durch Ändern, Hinzufügen oder Löschen eines unveränderlichen Objekts wird ein neues unveränderliches Objekt zurückgegeben. Das Prinzip der unveränderlichen Implementierung ist eine persistente Datenstruktur. Das heißt, wenn alte Daten zur Erstellung neuer Daten verwendet werden, ist garantiert, dass die alten und neuen Daten gleichzeitig verfügbar und unverändert sind. Um den durch tiefes Kopieren verursachten Leistungsverlust zu vermeiden, verwendet Immutable gleichzeitig die strukturelle gemeinsame Nutzung. Wenn sich also ein Knoten im Objektbaum ändert, werden nur dieser Knoten und der davon betroffene übergeordnete Knoten sowie andere Knoten geändert werden geteilt.
Verwandte Lernempfehlungen: Javascript-Lern-Tutorial
Das obige ist der detaillierte Inhalt vonWelche Leistungsoptimierungen wurden an Reaktionskomponenten vorgenommen?. 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



So erstellen Sie eine Echtzeit-Chat-Anwendung mit React und WebSocket Einführung: Mit der rasanten Entwicklung des Internets hat die Echtzeitkommunikation immer mehr Aufmerksamkeit auf sich gezogen. Live-Chat-Apps sind aus dem modernen Sozial- und Arbeitsleben nicht mehr wegzudenken. In diesem Artikel wird erläutert, wie Sie mit React und WebSocket eine einfache Echtzeit-Chat-Anwendung erstellen, und es werden spezifische Codebeispiele bereitgestellt. 1. Technische Vorbereitung Bevor wir mit der Erstellung einer Echtzeit-Chat-Anwendung beginnen, müssen wir die folgenden Technologien und Tools vorbereiten: React: eine zum Erstellen

React-Leitfaden zur Front-End- und Back-End-Trennung: So erreichen Sie die Front-End- und Back-End-Entkopplung und die unabhängige Bereitstellung. Es sind spezifische Codebeispiele erforderlich. In der heutigen Webentwicklungsumgebung ist die Front-End- und Back-End-Trennung zu einem Trend geworden. Durch die Trennung von Front-End- und Back-End-Code kann die Entwicklungsarbeit flexibler und effizienter gestaltet und die Zusammenarbeit im Team erleichtert werden. In diesem Artikel wird erläutert, wie Sie mithilfe von React eine Front-End- und Back-End-Trennung erreichen und so die Ziele der Entkopplung und unabhängigen Bereitstellung erreichen. Zuerst müssen wir verstehen, was Front-End- und Back-End-Trennung ist. Im traditionellen Webentwicklungsmodell sind Front-End und Back-End gekoppelt

So erstellen Sie mit React und Flask einfache und benutzerfreundliche Webanwendungen. Einführung: Mit der Entwicklung des Internets werden die Anforderungen an Webanwendungen immer vielfältiger und komplexer. Um den Anforderungen der Benutzer an Benutzerfreundlichkeit und Leistung gerecht zu werden, wird es immer wichtiger, moderne Technologie-Stacks zum Aufbau von Netzwerkanwendungen zu verwenden. React und Flask sind zwei sehr beliebte Frameworks für die Front-End- und Back-End-Entwicklung, und sie arbeiten gut zusammen, um einfache und benutzerfreundliche Webanwendungen zu erstellen. In diesem Artikel erfahren Sie, wie Sie React und Flask nutzen

So erstellen Sie eine zuverlässige Messaging-Anwendung mit React und RabbitMQ Einführung: Moderne Anwendungen müssen zuverlässiges Messaging unterstützen, um Funktionen wie Echtzeitaktualisierungen und Datensynchronisierung zu erreichen. React ist eine beliebte JavaScript-Bibliothek zum Erstellen von Benutzeroberflächen, während RabbitMQ eine zuverlässige Messaging-Middleware ist. In diesem Artikel wird erläutert, wie Sie React und RabbitMQ kombinieren, um eine zuverlässige Messaging-Anwendung zu erstellen, und es werden spezifische Codebeispiele bereitgestellt. RabbitMQ-Übersicht:

React Responsive Design Guide: So erzielen Sie adaptive Front-End-Layouteffekte Mit der Beliebtheit mobiler Geräte und der steigenden Nachfrage der Benutzer nach Multi-Screen-Erlebnissen ist Responsive Design zu einem der wichtigsten Aspekte in der modernen Front-End-Entwicklung geworden. React, eines der derzeit beliebtesten Frontend-Frameworks, bietet eine Fülle von Tools und Komponenten, die Entwicklern dabei helfen, adaptive Layouteffekte zu erzielen. In diesem Artikel werden einige Richtlinien und Tipps zur Implementierung von responsivem Design mit React vorgestellt und spezifische Codebeispiele als Referenz bereitgestellt. Fle mit React

ReactRouter-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung Mit der Popularität von Single-Page-Anwendungen ist das Front-End-Routing zu einem wichtigen Bestandteil geworden, der nicht ignoriert werden kann. Als beliebteste Routing-Bibliothek im React-Ökosystem bietet ReactRouter umfangreiche Funktionen und benutzerfreundliche APIs, wodurch die Implementierung des Front-End-Routings sehr einfach und flexibel ist. In diesem Artikel wird die Verwendung von ReactRouter vorgestellt und einige spezifische Codebeispiele bereitgestellt. Um ReactRouter zuerst zu installieren, benötigen wir

React-Code-Debugging-Leitfaden: So finden und beheben Sie Front-End-Fehler schnell. Einführung: Bei der Entwicklung von React-Anwendungen stoßen Sie häufig auf eine Vielzahl von Fehlern, die zum Absturz der Anwendung oder zu fehlerhaftem Verhalten führen können. Daher ist die Beherrschung von Debugging-Fähigkeiten eine wesentliche Fähigkeit für jeden React-Entwickler. In diesem Artikel werden einige praktische Techniken zum Auffinden und Beheben von Front-End-Fehlern vorgestellt und spezifische Codebeispiele bereitgestellt, um Lesern dabei zu helfen, Fehler in React-Anwendungen schnell zu finden und zu beheben. 1. Auswahl der Debugging-Tools: In Re

So verwenden Sie React und Google BigQuery zum Erstellen schneller Datenanalyseanwendungen. Einführung: Im heutigen Zeitalter der Informationsexplosion ist die Datenanalyse zu einem unverzichtbaren Bindeglied in verschiedenen Branchen geworden. Unter anderem ist die Entwicklung schneller und effizienter Datenanalyseanwendungen für viele Unternehmen und Einzelpersonen zum Ziel geworden. In diesem Artikel wird erläutert, wie Sie mit React und Google BigQuery eine schnelle Datenanalyseanwendung erstellen, und es werden detaillierte Codebeispiele bereitgestellt. 1. Übersicht React ist ein Werkzeug zum Erstellen
