← inaro.devAI駆動開発 学習ツール
中級

useEffectと副作用

なぜ学ぶか: useEffectは、Reactの中でもつまずきやすいフックです。使いどころは「画面を出したあとに、外の世界とやり取りする」こと。AIもここをよく間違えるので、「このuseEffect、本当に必要?」と気づけるようになるのがゴールです。

まずはこの例を見てみましょう

function Clock() {
  const [now, setNow] = useState(new Date());

  useEffect(() => {
    // 画面を出したあと、1秒ごとに時刻を更新するタイマーを動かす
    const timer = setInterval(() => setNow(new Date()), 1000);

    // 後片付け: 画面が消えるときにタイマーを止める
    return () => clearInterval(timer);
  }, []); // ← [] は「最初の1回だけ動かす」という意味

  return <p>現在時刻: {now.toLocaleTimeString()}</p>;
}

「画面を出したあとにタイマーを動かし、消えるときに止める」— useEffectの典型的な使い方です。

画面を出したあとの処理を書く場所

データ取得やタイマーなど、「画面を描くこと」以外の仕事を書きます。(こういう処理を難しい言葉で「副作用」と呼びます)

末尾のカッコ=いつ動くか

例の[]は「最初の1回だけ」。[count]なら「countが変わるたび」。まずは[]の形だけ覚えればOKです。

後片付けを忘れない

例のreturn () => clearInterval(timer)が後片付けです。忘れると、画面が消えた後もタイマーが裏で動き続けます。

AIがよくやるミス:いらないuseEffect

「他の値から計算できるもの」をわざわざuseEffectで作っている → その場で計算すれば済みます。「これ消せる?」が定番の気づきです。

ステップ 1 / 3

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。