ぶうううん's Cafe

どうにかこうにか。備忘録に近い。

React.lazyについての調査

React.lazyとは

 Docsには次のように書いてあります。[1]

React.lazy 関数を使用すると、動的インポートを通常のコンポーネントとしてレンダーすることができます。

ここでいう動的インポートとは、次のようにimport文を利用した通常のインポートのこと。

import SampleComponent from './SampleComponent';

Ract.lazyを利用すると、次のように記述することができるとのこと。

const SampleComponent = React.lazy(() => import('./SampleComponent'));

React.lazyのメリット

 React.lazyを利用することで、初回レンダリング時に全てをインポートする必要がなくなり、インポートを必要とするときに初めて読み込むということが可能になる。

React.lazyの適用箇所

 React.lazyを利用したコード分割には、ルーティング単位でのコード分割が良いとのこと。[2]

コード分割を導入するにあたって適している場所はルーティングです。Web を使用するほとんどの人は、多少のロード時間がかかるページ遷移に慣れています。また、ユーザがページ上の他の要素を同時に操作する可能性を減らすよう、ページ全体を一度に再レンダーすることが多いでしょう。

以下のようなコードがあった場合、問い合わせページ(inquity)では商品ページ(products)のコンポーネントは不要なので、問い合わせページに遷移した際は商品ページのコンポーネントは読み込まずに済む。

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

const Products = lazy(() => import('./routes/Products'));
const Inquiry = lazy(() => import('./routes/Inquity'));

const App = () => (
  <Router>
    <Suspense fallback={<div>Loading...</div>}>
      <Routes>
        <Route path="/products" element={<Products />} />
        <Route path="/inquiry" element={<Inquiry />} />
      </Routes>
    </Suspense>
  </Router>
);

References

[1][2]. React Organization:コード分割、React Docs、入手先 < https://ja.reactjs.org/docs/code-splitting.html > (参照2023-01-31)