コード分割 は、JavaScript バンドルをより小さなチャンクに分割することで React アプリケーションのパフォーマンスを最適化する手法です。 React は、コンポーネント レベルでコード分割を実装するための組み込み方法として React.lazy を提供します。これにより、必要に応じてアプリケーションの一部を動的にロードできるようになります。
const LazyComponent = React.lazy(() => import('./LazyComponent')); function App() { return ( <React.Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </React.Suspense> ); }
import React from "react"; import HeavyComponent from "./HeavyComponent"; function App() { return ( <div> <h1>Main App</h1> <HeavyComponent /> </div> ); } export default App;
このアプローチでは、すぐに必要でない場合でも、HeavyComponent 全体がメイン アプリにバンドルされます。
import React, { Suspense } from "react"; const HeavyComponent = React.lazy(() => import("./HeavyComponent")); function App() { return ( <div> <h1>Main App</h1> <Suspense fallback={<div>Loading...</div>}> <HeavyComponent /> </Suspense> </div> ); } export default App;
現在、HeavyComponent はレンダリング時にのみロードされます。これにより、最初のバンドルのサイズが小さくなります。
コード分割は 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;
論理分割を使用して、単一のアプリに複数のコンポーネントを遅延読み込みします。
import React, { Suspense, useState } from "react"; const ComponentA = React.lazy(() => import("./ComponentA")); const ComponentB = React.lazy(() => import("./ComponentB")); function App() { const [showA, setShowA] = useState(false); const [showB, setShowB] = useState(false); return ( <div> <button onClick={() => setShowA(true)}>Load Component A</button> <button onClick={() => setShowB(true)}>Load Component B</button> <Suspense fallback={<div>Loading...</div>}> {showA && <ComponentA />} {showB && <ComponentB />} </Suspense> </div> ); } export default App;
React は、失敗したインポートに対する組み込みのエラー処理を提供しません。このようなケースを処理するには、エラー境界 を使用できます。
const LazyComponent = React.lazy(() => import('./LazyComponent')); function App() { return ( <React.Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </React.Suspense> ); }
React.lazy を使用したコード分割は、アプリのパフォーマンスを向上させる強力な方法です。コンポーネントを動的にロードすることで、初期ロード時間を短縮し、ユーザー エクスペリエンスを向上させることができます。 Suspense および適切なエラー処理と組み合わせると、効率的でスケーラブルな React アプリケーションを構築するための堅牢なソリューションが提供されます。
以上がReact.lazy によるコード分割: アプリのパフォーマンスを向上させるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。