🐬

【React学習】useEffectについて

2022/07/10に公開

記載目的

JavascriptやReactを勉強する過程でuseEffetを利用する必要が出てきたので備忘録的に記載しておく。

useEffectとは

関数コンポーネントのみで使用可能なHook。画面の描画後や更新時に、記載した処理を実行させることができる。つまり、関数の実行タイミングをReactのレンダリング後まで遅らせるHook。
(描画前に何かしたい場合は、useLayoutEffectを使用すること。)
fetch関数を使用して外部のリソースからデータを取得したり、DOMの更新、ロギングなどを行うことができる。
react Classコンポーネントのライフサイクルの下記3つと同様な処理を行うことができるHook。

・ componentDidMount   :コンポーネントのマウント直後に実行される
・ componentDidUpdate  :コンポーネントが再描画される度に実行される
・ componentWillUnmount:コンポーネントがアンマウントされて破棄される直前に実行される

使い方

第二引数に記載する内容で、再描画するタイミングを設定することができる

■第二引数を「空欄」とした場合

第二引数を空欄とすることでコンポーネントの表示時と更新時にuseEffectを実行させることができる。

useEffect(()=>{
  //処理
},)

useEffectの実行タイミング

  • ブラウザでコンポーネントが初めて表示された直後
  • コンポーネントが更新された直後

■第二引数を「[]」とした場合

第二引数を[]とすることでコンポーネント更新時にuseEffect内の処理を実行しないようにできる。

useEffect(()=>{
  //処理
},[])

useEffectの実行タイミング

  • ブラウザでコンポーネントが初めて表示された直後

■第二引数を「[state変数]」とした場合

第二引数に追加した[]に特定のstate変数を追加することで、その変数の変化のみを監視し、この変数が更新されるとuseEffectが実行されるようになる。

useEffect(()=>{
  //処理
},[state変数])

useEffectの実行タイミング

  • ブラウザでコンポーネントが初めて表示された直後
  • state変数が更新されたとき

お願い

もし記載内容に間違いがありましたらご指摘頂けると幸いです。

参考資料

今回勉強した際に下記サイトを参考にさせて頂きました。
初心者でも簡単にわかるReact useEffect, useLayoutEffectの使い方
React hooksを基礎から理解する (useEffect編)

Discussion