Open7

React 18 調査

フロントエンドえんじにゃーフロントエンドえんじにゃー

https://qiita.com/Yuki_Oshima/items/b6ec2fb9f5b5d53381ad

上記によると、React18の具体的な新機能は以下

  • レンダリングのバッチ化
    • 複数の状態更新による再レンダリングをまとめて実行
    • パフォーマンス向上
  • トランジションの導入
    • 再レンダリングを非同期で処理が可能になった
    • ユーザーの操作を阻害せずに重いレンダリングを裏側で実行可能になった
    • startTransition
    • useTransitionでisPendingを取得可能
    • isPendingを利用することで、ローディング表示を切り替えることができる
  • <Suspense/>のサーバサイドレンダリング対応
フロントエンドえんじにゃーフロントエンドえんじにゃー

React17とReact18の差分

React18へのバージョンアップについて

react-domのrender → react-dom/clientのcreateRoot()に変更

React 17

import { render } from 'react-dom';
const container = document.getElementById('app');
render(<App tab="home" />, container);

React 18

import { createRoot } from 'react-dom/client';
const container = document.getElementById('app');
const root = createRoot(container);
root.render(<App tab="home" />);

React周辺パッケージのアップグレード

framer-motion	4 → 6
react-dnd	15 → 16
@testing-library/react	12 → 13

型の変更

React.FC の props に暗黙的に children が含まれなくなったので、該当箇所で children を明示。

型の固定

@types/react、@types/react-dom のバージョンを固定する。

https://developers.prtimes.jp/2022/08/17/upgrade-to-react-18/

フロントエンドえんじにゃーフロントエンドえんじにゃー

React.lazy?Lazy Import?lazy loading?

React.lazy、lazy import、lazy loadingなどのキーワードが出てくる

React.lazyとlazy importとlazy loadingがごっちゃになっていたけど、
React.lazyをつかったdynamic importをlazy importと呼んでいて、結果的にloadingがlazyになっているということで落とし込めた。

https://qiita.com/KokiSakano/items/b6d4e6875443064032b4
https://qiita.com/kakken1988/items/9f14480c8a9f0abf7b3b