React/最適化/Lesson 19
React.memo
30分·theory
このチャプター
2/2
JavaScript
React.memo
💡 なぜ学ぶべきか?
🎯
不要な再レンダリングを防ぐことで、アプリの動作を高速化します。
💼
リスト内に数千件のアイテムをレンダリングする際、パフォーマンスの差は劇的です。
⚡
面接でのパフォーマンス最適化に関する質問の定番回答です。
🔗
本番環境でパフォーマンス問題を解決する際の最初のツールです。
🏢 실무에서는
本番環境では、検索結果リスト・無限スクロールフィード・リアルタイム通知など、頻繁に更新される画面で React.memo を使用します。たとえば Naver Search のような検索体験では、ユーザーが文字を入力するたびに結果リスト全体が再レンダリングされないよう、各検索結果アイテムを React.memo でラップしてパフォーマンスを維持します。
React.memoとは?
React.memo
Propsが変更されない場合に再レンダリングをスキップする高階コンポーネント(HOC)です。
いつ使う?
- ▸親が頻繁に再レンダリングされるが、子のPropsは変わらない場合
- ▸レンダリングコストが高いコンポーネント
- ▸リストの個々のアイテム
React 19での変化
React Compilerが自動的にmemoを適用するため、手動での使用は少なくなります。
この概念はReactコンポーネント開発において根幹をなします。Reactの宣言的UIパラダイムを理解し、propsとstateの違いを明確に区別してください。コンポーネントは入力(props)に対して常に同じ出力(JSX)を返す純粋関数のように動作する必要があります。
💡 💡 React.memoのヒント
- ▸React 19: Compilerが自動処理 → 手動memoを減らす
- ▸オブジェクト/配列のProps: useMemoで参照を安定させる
- ▸コールバックProps: useCallbackで関数参照を安定させる
- ▸計測: React DevTools Profilerで実際の効果を確認する
この概念はReactコンポーネント開発において根幹をなします。Reactの宣言的UIパラダイムを理解し、propsとstateの違いを明確に区別してください。コンポーネントは入力(props)に対して常に同じ出力(JSX)を返す純粋関数のように動作する必要があります。
⚛️ Reactパターン — React.memo
React.memoをReactでどのように使うか、コードを交えてステップごとに学びましょう。
1
🧩
1. React.memoを使うシナリオ
この機能が必要な状況。
↓
2
💻
2. コードの記述
React.memoの基本的な使い方。
↓
3
🎨
3. レンダリング結果
ユーザーが見る画面。
↓
4
💡
4. 実践的なヒント
よくある落とし穴とベストプラクティス。
🎮 React.memo — ステップごとの理解
各ステップをクリックして内容を読み、「理解しました」ボタンで進捗を確認してください。
🖥️ 実行結果 — レンダリングされたReactコンポーネント
✏️ React 코드 수정하기 (클릭해서 열기)
⚛️ React 18 + Babel Standalone — まず結果を確認し、エディタで自由に編集できます。
確認クイズ
React.memoはどのように再レンダリングを防ぐのですか?
先に読むとよい概念: useTransition / useDeferredValue
次のおすすめ: Error Boundary + Suspense