suchen
HeimWeb-Frontendjs-TutorialReact-Performance-Optimierungstechniken: Memoisierung, Lazy Loading und mehr

React Performance Optimization Techniques: Memoization, Lazy Loading, and More

Beim Erstellen moderner Webanwendungen ist die Leistung entscheidend. Benutzer erwarten schnelle, reaktionsschnelle Apps und selbst eine geringfügige Verzögerung kann zu Frustration führen. Obwohl React leistungsstark ist, kann es manchmal zu Leistungsengpässen kommen, insbesondere wenn Anwendungen immer größer und komplexer werden. Glücklicherweise gibt es mehrere Techniken zur Leistungsoptimierung, darunter Memoisierung, Lazy Loading und mehr.

In diesem Leitfaden erläutern wir einige der effektivsten Möglichkeiten zur Optimierung der Leistung Ihrer React-Anwendungen. Wir behandeln die Grundlagen des Memoisierens, Lazy Loading und Tools wie den React Profiler, um Ihnen bei der Identifizierung und Behebung von Engpässen zu helfen. Fangen wir an!

Einführung: Warum Leistung in modernen React-Apps wichtig ist

Stellen Sie sich Ihre Web-App wie ein Auto vor – egal wie elegant sie von außen aussieht, wenn sie nicht gut funktioniert, leidet das Benutzererlebnis. In React-Apps bezieht sich diese „Leistung“ darauf, wie schnell Ihre Komponenten gerendert werden und wie effizient sie aktualisiert werden, wenn sich die Daten oder der Status ändern.

Wenn Ihre React-App skaliert, kann das unnötige erneute Rendern von Komponenten oder das gleichzeitige Laden umfangreicher Pakete zu einer langsameren Leistung führen. Aus diesem Grund ist das Erlernen von React-Performance-Optimierungstechniken für die Erstellung reibungsloser, leistungsstarker Anwendungen von entscheidender Bedeutung.

Auswendiglernen in React

So nutzen Sie React.memo und useMemo effektiv

Memoisierung ist ein schickes Wort, das einfach bedeutet, das Ergebnis eines Funktionsaufrufs zwischenzuspeichern, damit Sie es nicht jedes Mal neu berechnen müssen. In React trägt die Memoisierung dazu bei, unnötige erneute Renderings zu vermeiden, indem sie sich das Ergebnis eines vorherigen Renderings merkt und dieses zwischengespeicherte Ergebnis verwendet, wenn sich nichts geändert hat.

React.memo

Beginnen wir mit React.memo. Diese Komponente höherer Ordnung verhindert, dass eine Komponente erneut gerendert wird, wenn sich ihre Requisiten nicht geändert haben.

Beispiel:

const MyComponent = React.memo(function MyComponent({ name }) {
  console.log('Rendered');
  return <div>Hello, {name}</div>;
});

In diesem Beispiel wird MyComponent nur dann neu gerendert, wenn sich die Namensstütze ändert. Wenn Sie denselben Namenswert übergeben, überspringt React das Rendering und verbessert so die Leistung.

Verwenden Sie Memo

Als nächstes kommt useMemo. Dieser Hook wird verwendet, um teure Berechnungen oder Werte in Ihren Funktionskomponenten zu speichern.

Beispiel:

import { useMemo } from 'react';

function MyApp({ items }) {
  const expensiveCalculation = useMemo(() => {
    return items.reduce((total, item) => total + item.value, 0);
  }, [items]);

  return <div>Total Value: {expensiveCalculation}</div>;
}

Hier wird die Berechnung nur dann erneut ausgeführt, wenn sich das Elementarray ändert. Dies spart Zeit, da nicht bei jedem Rendern das gleiche Ergebnis neu berechnet werden muss.

Lazy Loading-Komponenten

Verbessern der Ladezeiten mit React.lazy

Lazy Loading ist eine Technik, bei der Komponenten nur dann geladen werden, wenn sie benötigt werden, anstatt alles im Voraus zu laden. Dies trägt dazu bei, die anfängliche Ladezeit Ihrer Anwendung zu verkürzen, sodass sie sich schneller anfühlt.

React bietet eine integrierte Funktion namens React.lazy(), mit der Sie Komponenten bei Bedarf laden können.

Beispiel:

const MyComponent = React.memo(function MyComponent({ name }) {
  console.log('Rendered');
  return <div>Hello, {name}</div>;
});

In diesem Beispiel wird MyComponent nur dann geladen, wenn es tatsächlich benötigt wird. Die Suspense-Komponente bietet eine Fallback-Benutzeroberfläche (wie ein Lade-Spinner), während die Komponente abgerufen wird, was die Benutzererfahrung reibungsloser macht.

React Profiler zur Leistungsüberwachung

So identifizieren Sie Engpässe

Es ist schwer, etwas zu optimieren, das man nicht messen kann. Hier kommt der React Profiler ins Spiel. Mit dem React Profiler können Sie die Leistung Ihrer Komponenten verfolgen, langsame Renderings identifizieren und die „Kosten“ von erneuten Renderings messen.

Um den React Profiler zu verwenden, umschließen Sie einfach einen Komponentenbaum mit und stellen Sie eine Rückruffunktion bereit, um die Leistungsdaten zu sammeln.

Beispiel:

import { useMemo } from 'react';

function MyApp({ items }) {
  const expensiveCalculation = useMemo(() => {
    return items.reduce((total, item) => total + item.value, 0);
  }, [items]);

  return <div>Total Value: {expensiveCalculation}</div>;
}

Mit dem Profiler können Sie verfolgen, wie lange das Rendern jeder Komponente dauert, und Bereiche finden, in denen die Leistung verbessert werden kann, z. B. unnötiges erneutes Rendern.

Andere Optimierungsstrategien

Codeaufteilung, Optimierung der Ereignisverarbeitung und mehr

Über das Auswendiglernen und Lazy Loading hinaus gibt es mehrere andere Techniken, um die Leistung Ihrer React-App zu verbessern:

  1. Code-Aufteilung: Teilen Sie Ihre App in kleinere Teile auf, die bei Bedarf mit der Code-Aufteilungsfunktion von Webpack geladen werden können. Dadurch verringert sich die anfängliche Bündelgröße.
import React, { Suspense, lazy } from 'react';

const MyComponent = lazy(() => import('./MyComponent'));

function App() {
  return (
    <suspense fallback="{<div">Loading...}>
      <mycomponent></mycomponent>
    </suspense>
  );
}
  1. Optimierung der Ereignisbehandlung: Verwenden Sie den useCallback-Hook, um Ereignishandler auswendig zu lernen und zu verhindern, dass sie bei jedem Rendern neu erstellt werden.
import { Profiler } from 'react';

function onRenderCallback(
  id, // the "id" prop of the Profiler tree that has just committed
  phase, // either "mount" (if the tree just mounted) or "update" (if it re-rendered)
  actualDuration, // time spent rendering the committed update
  baseDuration, // estimated time to render the entire subtree without memoization
  startTime, // when React began rendering this update
  commitTime, // when React committed this update
  interactions // the Set of interactions belonging to this update
) {
  console.log({ id, phase, actualDuration });
}

function MyApp() {
  return (
    <profiler id="App" onrender="{onRenderCallback}">
      <mycomponent></mycomponent>
    </profiler>
  );
}
  1. Entprellen und Drosseln: Optimieren Sie Ereignis-Listener wie Scrollen oder Größenänderung, indem Sie sie entprellen oder drosseln, um die Häufigkeit von Aktualisierungen zu begrenzen.
   const OtherComponent = lazy(() => import('./OtherComponent'));

Fazit: Mit diesen Techniken leistungsstarke Reaktionsanwendungen erstellen

Das Erstellen schneller und effizienter React-Anwendungen erfordert eine Kombination von Techniken. Durch die Verwendung von memoization mit React.memo und useMemo können Sie unnötige erneute Renderings verhindern. Durch das Lazy Loading von Komponenten mit React.lazy können Sie die Ladezeiten verkürzen, indem Sie Komponenten nur dann abrufen, wenn sie benötigt werden. Der React Profiler hilft Ihnen, Leistungsengpässe zu erkennen und zu optimieren.

In Kombination mit Strategien wie Code-Splitting und Ereignisoptimierung können Sie sicherstellen, dass Ihre React-Apps auch bei zunehmender Größe und Komplexität ein reibungsloses und reaktionsfähiges Benutzererlebnis bieten.


Sind Sie bereit, die Leistung Ihrer React-App auf die nächste Stufe zu heben? Probieren Sie diese Optimierungstechniken in Ihren Projekten aus und beobachten Sie, wie sich die Geschwindigkeit Ihrer App verbessert!


Wenn Ihnen dieser Artikel gefallen hat, denken Sie darüber nach, meine Arbeit zu unterstützen:

  • Lade mir einen Kaffee ein
  • Buchen Sie einen Anruf für Mentoring oder Karriereberatung
  • Folgen Sie mir auf Twitter
  • Vernetzen Sie sich auf LinkedIn

Das obige ist der detaillierte Inhalt vonReact-Performance-Optimierungstechniken: Memoisierung, Lazy Loading und mehr. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
Ersetzen Sie Stringzeichen in JavaScriptErsetzen Sie Stringzeichen in JavaScriptMar 11, 2025 am 12:07 AM

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

JQuery überprüfen, ob das Datum gültig istJQuery überprüfen, ob das Datum gültig istMar 01, 2025 am 08:51 AM

Einfache JavaScript -Funktionen werden verwendet, um zu überprüfen, ob ein Datum gültig ist. Funktion isvaliddate (s) { var bits = ssplit ('/'); var d = neues Datum (Bits [2] '/' Bits [1] '/' Bits [0]); return !! (d && (d.getMonth () 1) == Bits [1] && d.getDate () == Nummer (Bits [0])); } //prüfen var

JQuery Get Element Polsterung/RandJQuery Get Element Polsterung/RandMar 01, 2025 am 08:53 AM

In diesem Artikel wird erläutert, wie JQuery verwendet wird, um die inneren Rand- und Randwerte von DOM -Elementen zu erhalten und festzulegen, insbesondere die spezifischen Orte des äußeren Randes und der inneren Ränder des Elements. Während es möglich ist, die inneren und äußeren Ränder eines Elements mit CSS einzustellen, kann es schwierig sein, genaue Werte zu erhalten. // aufstellen $ ("Div.Header"). CSS ("Margin", "10px"); $ ("Div.Header"). CSS ("Padding", "10px"); Sie könnten denken, dieser Code ist

10 JQuery Accords Registerkarten10 JQuery Accords RegisterkartenMar 01, 2025 am 01:34 AM

In diesem Artikel werden zehn außergewöhnliche JQuery -Registerkarten und Akkordeons untersucht. Der wichtigste Unterschied zwischen Registerkarten und Akkordeons liegt in der angezeigten und versteckten Inhaltsplatten. Lassen Sie uns mit diesen zehn Beispielen befassen. Verwandte Artikel: 10 JQuery Registerkarte Plugins

10 lohnt10 lohntMar 01, 2025 am 01:29 AM

Entdecken Sie zehn außergewöhnliche JQuery -Plugins, um die Dynamik und die visuelle Anziehungskraft Ihrer Website zu verbessern! Diese kuratierte Sammlung bietet verschiedene Funktionen, von Bildanimation bis hin zu interaktiven Galerien. Lassen Sie uns diese leistungsstarken Tools untersuchen: Verwandte Beiträge: 1

HTTP-Debugging mit Knoten und HTTP-KonsoleHTTP-Debugging mit Knoten und HTTP-KonsoleMar 01, 2025 am 01:37 AM

HTTP-Console ist ein Knotenmodul, mit dem Sie eine Befehlszeilenschnittstelle zum Ausführen von HTTP-Befehlen erhalten. Es eignet sich hervorragend zum Debuggen und dem genauen Sehen, was mit Ihren HTTP

Benutzerdefinierte Google -Search -API -Setup -TutorialBenutzerdefinierte Google -Search -API -Setup -TutorialMar 04, 2025 am 01:06 AM

Dieses Tutorial zeigt Ihnen, wie Sie eine benutzerdefinierte Google -Such -API in Ihr Blog oder Ihre Website integrieren und ein raffinierteres Sucherlebnis bieten als Standard -WordPress -Themen -Suchfunktionen. Es ist überraschend einfach! Sie können die Suche auf y beschränken

JQuery fügen Sie Scrollbar zu Div hinzuJQuery fügen Sie Scrollbar zu Div hinzuMar 01, 2025 am 01:30 AM

Mit dem folgenden JQuery -Code -Snippet können Scrollbars hinzugefügt werden, wenn der Div -Inhalt den Containerelementbereich überschreitet. (Keine Demonstration, bitte kopieren Sie es direkt nach Firebug) // d = Dokument // W = Fenster // $ = jQuery var contentArea = $ (this), wintop = contentArea.scrolltop (), docheight = $ (d) .height (), winHeight = $ (w) .height (), Divheight = $ ('#c

See all articles

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

Heiße Werkzeuge

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools