useMemo
別名: useMemo フック / メモ化フック
依存配列が変化したときだけ高コストな計算を再実行し、結果をキャッシュして再レンダリングを最適化する React フック。
#react#hooks#usememo#memoization
公開:
定義
useMemo は、計算結果をメモ化(キャッシュ)する React フックです。const value = useMemo(() => compute(a, b), [a, b]) のように、依存配列が変わったときだけ第 1 引数の関数を再実行します。
詳細
再レンダリングのたびに走る重い計算や、毎回新しく作られるオブジェクト・配列を安定させたいときに使います。
後者は、子コンポーネントや useEffect の依存配列へ「同じ参照」を渡し、ムダな再実行を防ぐ目的でよく使われます。
メモ化自体にもコストがあるため、明確なボトルネックがある箇所に絞るのが原則です。
よくある誤解
- 「付ければ必ず速くなる」:比較と保持のコストがあり、軽い計算ではかえって遅くなることがあります。
- 「
useEffectの代わりになる」:副作用の実行用ではなく、あくまで値の計算とキャッシュ用です。
関連
メモ化が効かない原因は useMemo がメモ化されず毎回再計算される、副作用フックは useEffect を参照。