Reactのメモ化周りを整理する

React-Hooks JavaScript

はじめに

ちょっとご無沙汰だったReactを触る機会があったので、改めて学んでいます。Hooksのメモ化周りについて、曖昧だった部分を簡単に整理してみました。

メモ化周りの機能

  • React.memo
    不要な再レンダリングを省略できるコンポーネントを生成するもの。
  • useCallback
    React.memoが依存する関数をメモ化するためのもの。
  • useMemo
    依存する状態に基づいて結果をメモ化する関数。

React.memoとuseMemo

React.memoはメモ化できるコンポーネントを返すことに特化しています。メモ化するコンポーネントは、それを使用する親コンポーネントとは独立して定義します。
useMemoは値を返す関数で、スカラ値やオブジェクトのほか、Reactのコンポーネントも返すこともできます。コンポーネント内でメモ化したコンポーネントを生成する場合はこちらを使います。

useCallbackの目的

useCallbackはReact.memoと併用することによって、関数の再生成によるコンポーネントの再レンダリングを防ぐために使います。関数そのものの生成コストは高くないため、それ自体を目的としては使いません。

まとめ

コンポーネントのメモ化については、React.memoとuseMemoどちらでも可能なので、予め使用方針を明確にしておいたほうが良さそうです。

コメント