ホームページ >ウェブフロントエンド >jsチュートリアル >React で Suspense を使用して非同期レンダリングを改善する方法
React Suspense は、コンポーネントまたはデータの読み込み中にフォールバック UI を表示することで、開発者が非同期レンダリングを適切に処理できるようにする強力な機能です。 React Query、Relay、カスタム実装などの React.lazy、Concurrent Rendering、Data Fetching ソリューションと連携して動作します。
import React, { Suspense } from "react"; const LazyComponent = React.lazy(() => import("./LazyComponent")); function App() { return ( <Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </Suspense> ); } export default App;
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 Heavy Component...</div>}> <HeavyComponent /> </Suspense> </div> ); } export default App;
現在、HeavyComponent は必要な場合にのみロードされ、ロード プロセス中にフォールバックが表示されます。
import React, { Suspense } from "react"; const ComponentA = React.lazy(() => import("./ComponentA")); const ComponentB = React.lazy(() => import("./ComponentB")); function App() { return ( <div> <h1>Main App</h1> <Suspense fallback={<div>Loading Components...</div>}> <ComponentA /> <ComponentB /> </Suspense> </div> ); } export default App;
フォールバック UI は、両方のコンポーネントの読み込みが完了するまで表示されます。
React Suspense は、Relay や React Query などのライブラリと統合すると、非同期データのフェッチにも役立ちます。
import React, { Suspense } from "react"; import { useQuery } from "react-query"; function DataComponent() { const { data } = useQuery("fetchData", fetchData); return <div>{data}</div>; } function App() { return ( <Suspense fallback={<div>Loading data...</div>}> <DataComponent /> </Suspense> ); } export default App;
コンポーネントまたはデータのロード中にエラーが発生した場合、React Suspense には組み込みのエラー処理が提供されません。この目的には、エラー境界を使用します。
import React, { Suspense } from "react"; const LazyComponent = React.lazy(() => import("./LazyComponent")); function App() { return ( <Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </Suspense> ); } export default App;
複数のサスペンス コンポーネントをネストして、フォールバック状態を細かく制御できます。
import React from "react"; import HeavyComponent from "./HeavyComponent"; function App() { return ( <div> <h1>Main App</h1> <HeavyComponent /> </div> ); } export default App;
React Suspense は、React アプリケーションでの非同期レンダリングを管理するための多用途ツールです。これにより、読み込み状態の処理が簡素化され、遅延読み込みによるパフォーマンスが向上し、コード分割やエラー処理技術と組み合わせることで、よりスムーズなユーザー エクスペリエンスが実現されます。
以上がReact で Suspense を使用して非同期レンダリングを改善する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。