React useEffectの使い方を完全解説【初心者向け】

フロントエンド開発Tips

Reactを学び始めると必ず登場するのが useEffect
「いつ実行されるの?」「依存配列って何?」と混乱しやすいフックです。

この記事では、下記の3つに分けて紹介しています。

  • useEffect の基本

  • よくある3つの使い方

  • 初心者がハマりやすい注意点

実際のコードを参考に、分かりやすく解説します。


useEffectとは?

useEffect「コンポーネントの副作用を扱うためのフック」 です。

副作用とは、例えば次のような処理です。

  • API通信

  • DOM操作

  • イベント登録

  • タイマー処理

useEffect(() => {
 // 副作用の処理
}, []);

基本構文

useEffect(() => {
 console.log("実行されました");
}, []);
  • 第1引数:実行したい処理

  • 第2引数:依存配列(いつ実行するかを決める)


① 初回マウント時に1回だけ実行

useEffect(() => {
 console.log("初回のみ実行");
}, []);

📌 空の配列 [] を渡すと初回のみ実行されます。

よくある用途

  • APIからデータ取得

  • 初期設定

  • 初回ログ出力


② 特定の値が変わったときに実行

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

useEffect(() => {
 console.log(“countが変わりました”, count);
}, [count]);

📌 count が変わるたびに実行されます。

よくある用途

  • フィルター処理

  • 検索条件の変更検知

  • フォーム入力の監視


③ 毎回の再レンダリング時に実行(注意)

useEffect(() => {
 console.log("毎回実行される");
});

📌 依存配列を書かないと毎回実行されます。

⚠️ パフォーマンス悪化の原因になるため、基本的には非推奨です。


クリーンアップ処理(超重要)

イベント登録やタイマーは後片付けが必要です。

useEffect(() => {
  const timer = setInterval(() => {
    console.log("1秒ごと");
  }, 1000);

  return () => {
    clearInterval(timer);
  };
}, []);

📌 return で返した関数が クリーンアップ処理になります。


よくある初心者のミス

❌ useEffect の中で無限ループ

useEffect(() => {
 setCount(count + 1);
}, [count]);

count が変わる → useEffect 実行 → setCount → 無限ループ

対策

  • 条件分岐を入れる

  • 本当に依存配列が必要か見直す


useEffectは「いつ実行されるか」を意識する

書き方 実行タイミング
[] 初回のみ
[state] state変更時
なし 毎回

まとめ

  • useEffectは副作用を扱うためのフック

  • 依存配列が超重要

  • 初回 / 変更時 / 毎回 の違いを理解する

  • クリーンアップを忘れない

コメント

タイトルとURLをコピーしました