Heim > Web-Frontend > js-Tutorial > Verbessern Sie die Leistung der React-App mit Lazy Loading-Komponenten

Verbessern Sie die Leistung der React-App mit Lazy Loading-Komponenten

Susan Sarandon
Freigeben: 2024-12-31 08:03:13
Original
330 Leute haben es durchsucht

Improve React App Performance with Lazy Loading Components

Lazy Loading-Komponenten in React

Lazy Loading ist eine Technik in React, die es Ihnen ermöglicht, Komponenten nur dann zu laden, wenn sie benötigt werden. Dies trägt dazu bei, die Leistung Ihrer Anwendung zu verbessern, indem die anfängliche Ladezeit verkürzt wird, da zunächst nur die erforderlichen Teile der App geladen werden und der Rest bei Bedarf dynamisch geladen wird.

React bietet die Funktion React.lazy und die Komponente Suspense, um Lazy Loading zu implementieren.


So funktioniert Lazy Loading

  1. React.lazy: Importiert dynamisch eine Komponente.
  2. Suspense: Zeigt einen Fallback (z. B. einen Lade-Spinner) an, während die Komponente geladen wird.

Syntax

const LazyComponent = React.lazy(() => import('./path/to/Component'));

function App() {
  return (
    <React.Suspense fallback={<div>Loading...</div>}>
      <LazyComponent />
    </React.Suspense>
  );
}
Nach dem Login kopieren
Nach dem Login kopieren
  • React.lazy: Importiert dynamisch die angegebene Komponente.
  • Suspense: Umhüllt die verzögert geladene Komponente und stellt eine Fallback-Benutzeroberfläche bereit, während die Komponente geladen wird.

Beispiel 1: Einfaches verzögertes Laden

Ohne Lazy Loading

import React from "react";
import HeavyComponent from "./HeavyComponent";

function App() {
  return (
    <div>
      <h1>App Component</h1>
      <HeavyComponent />
    </div>
  );
}

export default App;
Nach dem Login kopieren
Nach dem Login kopieren

In diesem Beispiel wird die HeavyComponent immer geladen, auch wenn sie nicht sofort benötigt wird, wodurch sich die anfängliche Ladezeit verlängert.

Mit Lazy Loading

import React, { Suspense } from "react";

const HeavyComponent = React.lazy(() => import("./HeavyComponent"));

function App() {
  return (
    <div>
      <h1>App Component</h1>
      <Suspense fallback={<div>Loading Heavy Component...</div>}>
        <HeavyComponent />
      </Suspense>
    </div>
  );
}

export default App;
Nach dem Login kopieren

HeavyComponent wird jetzt nur geladen, wenn es gerendert wird. Die Fallback-Benutzeroberfläche (z. B. „Schwere Komponente wird geladen...“) wird angezeigt, während die Komponente abgerufen wird.


Beispiel 2: Lazy Loading mit React Router

Lazy Loading ist besonders nützlich beim Routing, um Komponenten für bestimmte Routen nur dann zu laden, wenn auf diese Routen zugegriffen wird.

import React, { Suspense } from "react";
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";

const Home = React.lazy(() => import("./Home"));
const About = React.lazy(() => import("./About"));
const Contact = React.lazy(() => import("./Contact"));

function App() {
  return (
    <Router>
      <Suspense fallback={<div>Loading Page...</div>}>
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/about" element={<About />} />
          <Route path="/contact" element={<Contact />} />
        </Routes>
      </Suspense>
    </Router>
  );
}

export default App;
Nach dem Login kopieren
  • React.lazy: Lädt träge Komponenten für Routen wie /about und /contact.
  • Suspense: Zeigt die Fallback-Benutzeroberfläche an, während die Komponenten geladen werden.

Vorteile von Lazy Loading

  1. Verbesserte Leistung: Reduziert die anfängliche Ladezeit, indem das Laden unnötiger Komponenten verzögert wird.
  2. Bessere Benutzererfahrung: Lädt Komponenten dynamisch, was bei der Erstellung reaktionsfähiger Apps hilft.
  3. Reduzierte Bundle-Größe: Teilt den Code in kleinere Teile auf und minimiert so die Größe des anfänglich geladenen JavaScript-Bundles.

Erweitertes Beispiel: Lazy Loading mehrerer Komponenten

Sie können mehrere Komponenten verzögert laden und mit bedingtem Rendering kombinieren.

const LazyComponent = React.lazy(() => import('./path/to/Component'));

function App() {
  return (
    <React.Suspense fallback={<div>Loading...</div>}>
      <LazyComponent />
    </React.Suspense>
  );
}
Nach dem Login kopieren
Nach dem Login kopieren

Fehlerbehandlung mit Lazy Loading

Wenn das Laden der verzögert geladenen Komponente fehlschlägt (z. B. aufgrund eines Netzwerkfehlers), bietet React keine integrierte Fehlerbehandlung für verzögertes Laden. Sie können ErrorBoundary verwenden, um solche Szenarien zu behandeln.

import React from "react";
import HeavyComponent from "./HeavyComponent";

function App() {
  return (
    <div>
      <h1>App Component</h1>
      <HeavyComponent />
    </div>
  );
}

export default App;
Nach dem Login kopieren
Nach dem Login kopieren

Best Practices für Lazy Loading

  1. Halten Sie Fallbacks einfach: Verwenden Sie einfache Fallback-Benutzeroberflächen wie Spinner oder Textnachrichten.
  2. Komponenten sinnvoll aufteilen: Teilen Sie Komponenten logisch auf, z. B. nach Route oder Funktion.
  3. Kombinieren Sie es mit der Codeaufteilung: Verwenden Sie Tools wie Webpack oder Vite für eine effektive Codeaufteilung.

Abschluss

Lazy Loading in React ist eine leistungsstarke Möglichkeit, die Anwendungsleistung zu verbessern und das Benutzererlebnis zu optimieren. Durch das dynamische Laden von Komponenten mithilfe von React.lazy und Suspense können Sie die anfängliche Ladezeit verkürzen und sicherstellen, dass nur die erforderlichen Teile Ihrer Anwendung abgerufen werden.


Das obige ist der detaillierte Inhalt vonVerbessern Sie die Leistung der React-App mit Lazy Loading-Komponenten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage