momotech_blog

React における `useMemo` と `useCallback` の違いと効果的な使い方

React における useMemouseCallback の違いと効果的な使い方

フロントエンド開発をしていると、状態管理や再レンダリングの制御に頭を悩ませることが多いです。
特にコンポーネントの再レンダリングが頻発するとパフォーマンスに影響が出るため、React Hooks の中でも useMemouseCallback は必須のテクニックとなります。


1. useMemo とは

使いどころ

使い方例

import { useMemo } from "react";

function PriceList({ prices }: { prices: number[] }) {
  // 毎レンダーで行うと重いソート処理をメモ化
  const sorted = useMemo(() => {
    return [...prices].sort((a, b) => a - b);
  }, [prices]);

  return (
    <ul>
      {sorted.map((p) => (
        <li key={p}>¥{p.toLocaleString()}</li>
      ))}
    </ul>
  );
}

2. useCallback とは

const memoizedCallback = useCallback(() => {
  doSomething(value);
}, [value]);

使いどころ

使い方例

import { useState, useCallback } from "react";

function Counter() {
  const [count, setCount] = useState(0);

  // setCount だけが変わったときに再定義
  const increment = useCallback(() => {
    setCount((c) => c + 1);
  }, []);

  return <button onClick={increment}>Count: {count}</button>;
}

3. useMemo vs useCallback

4. 注意点

5. まとめ

👤プロフィール


プロフィールアイコン

青木 日菜子

2024年10月に転職し、フロントエンドエンジニアとして React/Next.js を用いたモダンな Web 開発に従事。 現在はバックエンドにも視野を広げ、SQL の学習を継続中。

趣味は「おうちカフェ」。コーヒーメーカーで淹れたカフェオレを片手に、読書やテレビ鑑賞を楽しむ時間が至福。