サイトアイコン 上尾市のWEBプログラマーによるブログ

[react] useEffectが実行されるタイミング

概要

reactのuseEffectフックは第2引数によって実行されるタイミングが異なる。

サンプル

import { useState, useEffect } from 'react';

function App() {
  const [ num, setNum ] = useState(0);
  const [ num2, setNum2 ] = useState(0);

  useEffect(()=>{
    console.log('mounted, updated');
  });

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

  useEffect(()=>{
    console.log('variable changed');
  }, [num]);

  return (
    <>
      <button onClick={()=>{setNum(num+1);}}>num++</button>
      <button onClick={()=>{setNum2(num2+1);}}>num2++</button>
    </>
  );
}

export default App;

実行結果

読み込み時

mounted, updated
mounted
variable changed

num++ボタンクリック時

mounted, updated
variable changed

num2++ボタンクリック時

mounted, updated

モバイルバージョンを終了