ホーム › Q&A掲示板 › useEffectの依存配列について理解を深めたいです
React

useEffectの依存配列について理解を深めたいです

react_love📅 2026-07-23💬 4件の回答

ReactのuseEffectで、第2引数の依存配列([])が何を意味するのか、いまいち掴めていません。

空配列にする場合、値を入れる場合、そもそも書かない場合で、それぞれどう動きが変わるのでしょうか?たまに無限ループになってしまうのも避けたいです。

回答 4件

✔ ベストアンサー

依存配列は「この値が変わったら再実行する」というトリガーのリストです。3パターンで整理すると分かりやすいです。

// ① 毎回のレンダー後に実行(省略)
useEffect(() => { ... });

// ② 初回マウント時だけ実行(空配列)
useEffect(() => { ... }, []);

// ③ count が変わったときだけ実行
useEffect(() => { ... }, [count]);

無限ループの典型は、effect内で更新したstateを依存配列に入れてしまうケースです。

// NG: setCountでcountが変わる→再実行→また変わる…
useEffect(() => { setCount(count + 1); }, [count]);

更新する値は依存に入れない、または関数形式のsetCount(c => c + 1)を使うと防げます。

front_pro👍 18

「effectの中で使っている外部の値は、すべて依存配列に入れる」が原則です。ESLintのexhaustive-depsルールを入れておくと入れ忘れを警告してくれるのでおすすめです。

hooks_master👍 6

私も同じところでハマりました。「空配列 = componentDidMount相当」と覚えると最初はスッと入りました。

react_beginner👍 2

データ取得(fetch)を初回だけ行いたいなら空配列[]でOKです。クリーンアップが必要ならreturn () => {...}も忘れずに。

ui_dev👍 1
▶ progoのエディタでコードを試す
インストール・登録不要。ブラウザ上でそのままコードを実行して確認できます。