ホームページ > ウェブフロントエンド > jsチュートリアル > コンポーネントの遅延読み込みで React アプリのパフォーマンスを向上させる

コンポーネントの遅延読み込みで React アプリのパフォーマンスを向上させる

Susan Sarandon
リリース: 2024-12-31 08:03:13
オリジナル
330 人が閲覧しました

Improve React App Performance with Lazy Loading Components

React でのコンポーネントの遅延読み込み

遅延読み込み は、必要な場合にのみコンポーネントをロードできる React の手法です。これにより、最初はアプリの必要な部分のみがロードされ、残りは必要に応じて動的にロードされるため、初期ロード時間が短縮され、アプリケーションのパフォーマンスが向上します。

React は、遅延読み込みを実装するための React.lazy 関数と Suspense コンポーネントを提供します。


遅延読み込みの仕組み

  1. React.lazy: コンポーネントを動的にインポートします。
  2. Suspense: コンポーネントのロード中にフォールバック (ロード スピナーなど) を表示します。

構文

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

function App() {
  return (
    <React.Suspense fallback={<div>Loading...</div>}>
      <LazyComponent />
    </React.Suspense>
  );
}
ログイン後にコピー
ログイン後にコピー
  • React.lazy: 指定されたコンポーネントを動的にインポートします。
  • Suspense: 遅延ロードされたコンポーネントをラップし、コンポーネントのロード中にフォールバック UI を提供します。

例 1: 基本的な遅延読み込み

遅延読み込みなし

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

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

export default App;
ログイン後にコピー
ログイン後にコピー

この例では、HeavyComponent はすぐに必要でない場合でも常にロードされるため、初期ロード時間が長くなります。

遅延読み込みあり

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;
ログイン後にコピー

現在、HeavyComponent はレンダリング時にのみロードされます。コンポーネントがフェッチされている間、フォールバック UI (例: 「重いコンポーネントを読み込んでいます...」) が表示されます。


例 2: React Router を使用した遅延ロード

遅延読み込みは、特定のルートがアクセスされた場合にのみコンポーネントをロードするルーティングで特に役立ちます。

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;
ログイン後にコピー
  • React.lazy: /about や /contact などのルートのコンポーネントを遅延読み込みします。
  • Suspense: コンポーネントのロード中にフォールバック UI を表示します。

遅延読み込みの利点

  1. パフォーマンスの向上: 不要なコンポーネントのロードを延期することで、初期ロード時間を短縮します。
  2. ユーザー エクスペリエンスの向上: コンポーネントを動的に読み込み、応答性の高いアプリの作成に役立ちます。
  3. バンドル サイズの縮小: コードをより小さなチャンクに分割し、最初にロードされる JavaScript バンドルのサイズを最小限に抑えます。

高度な例: 複数のコンポーネントの遅延ロード

複数のコンポーネントを遅延読み込みし、条件付きレンダリングと組み合わせることができます。

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

function App() {
  return (
    <React.Suspense fallback={<div>Loading...</div>}>
      <LazyComponent />
    </React.Suspense>
  );
}
ログイン後にコピー
ログイン後にコピー

遅延読み込みによるエラー処理

遅延ロードされたコンポーネントのロードに失敗した場合 (ネットワークエラーなど)、React は遅延ロード用の組み込みエラー処理を提供しません。 ErrorBoundary を使用して、このようなシナリオを処理できます。

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

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

export default App;
ログイン後にコピー
ログイン後にコピー

遅延読み込みのベスト プラクティス

  1. フォールバックをシンプルに保つ: スピナーやテキスト メッセージなどの軽量のフォールバック UI を使用します。
  2. コンポーネントを賢く分割します: ルートごと、機能ごとなど、コンポーネントを論理的に分割します。
  3. コード分割と組み合わせる: Webpack や Vite などのツールを使用して、効果的にコードを分割します。

結論

React の遅延読み込みは、アプリケーションのパフォーマンスを向上させ、ユーザー エクスペリエンスを最適化する強力な方法です。 React.lazy と Suspense を使用してコンポーネントを動的にロードすることで、初期ロード時間を短縮し、アプリケーションの必要な部分のみが確実にフェッチされるようにすることができます。


以上がコンポーネントの遅延読み込みで React アプリのパフォーマンスを向上させるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート