0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【React】useEffectはいつ使う?混乱したときのシンプルな考え方

0
Posted at

Reactを学んでいると、
「useEffectって結局いつ使うの?」
「正直よく分からない…」
と感じることが多かった。(私の理解力問題も有…)

結論から言うと、useEffectの使用場面ははっきりしているようです。

この記事では、useEffectの役割を
私がこれで理解できたいう目線で整理してみました。


💡useEffectとは何か?

一言で言うと

stateやpropsの処理が変わった「あと」に、
Reactの外の処理を実行する仕組み

です。
ポイントは 「あと」です。


💡useEffectが動く順番

 ① state が変わる
 ② 再レンダリングされる
 ③ その後に useEffect が実行される

👉 render中には動かない
👉 画面が更新された「結果」として動く


💡「条件下で発火する」の正体

① 依存配列による条件

useEffect(() => {
  console.log(count);
}, [count]);

👉count が変わったときだけ実行される

② effect内の if 条件

useEffect(() => {
  if (count > 5) {
    alert('多い!');
  }
}, [count]);

👉条件を満たした場合のみ処理が走る


💡useEffectを使う具体的な場面

① 初回表示時に何かしたいとき

  • API通信
  • 初期データ取得
  • 外部ライブラリ初期化
useEffect(() => {
  fetchData();
}, []);

② stateやpropsの変化「後」に処理したいとき

  • 検索条件が変わったら再検索
  • 値が変わったら保存
useEffect(() => {
  save(count);
}, [count]);

③ Reactの外とやり取りするとき

  • localStorage
  • setInterval / setTimeout
addEventListener

useEffect(() => {
  localStorage.setItem('count', count);
}, [count]);

✅️初学者が混乱しやすいポイント整理

  • useEffectは頻繁に使うものではない
  • ロジックの中心に置くものではない
  • 「とりあえず書くもの」ではない

💡迷ったときの判断基準

「それ、render中にやったら怒られない?」

❗️API通信 → 怒られる → useEffect
❗️DOM操作 → 怒られる → useEffect
❗️計算・表示 → 怒られない → 不要


📖まとめ

  • useEffectはstate変更と同時に動くものではない
  • state変更の「結果」として後から動く
  • Reactだけで完結しない処理のための仕組み

useEffectは
「どうしても必要になったときに使う脇役」

という認識でも問題ないと思います!

実際の使用場面が出てきたらまた書き残して行こうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?