お湯。のブログ

useEffectの依存配列に関数を追加したときの挙動

関数はコンポーネントの再レンダリングのたびに、新しいインスタンスとして再生成されます。

→ 参照が変わります。

依存配列に含めた関数の参照が変わるたびにuseEffectが再実行されます。

サンプルコード

https://github.com/mutta0916/react-lab/blob/main/app/useEffect/function-deps/page.tsx

"use client";

import { useState, useEffect } from "react";

export default function FunctionDeps() {
  const [count, setCount] = useState(0);

  // 普通の関数
  const normalFunction = () => {
    // count の値をコンソールに出力する普通の関数
    console.log(`普通の関数が実行されました${count}`);
  };

  // 普通の関数を依存配列に入れると、useEffect が毎回実行される
  useEffect(() => {
    console.log("普通の関数の useEffect 実行");
    normalFunction();
  }, [normalFunction]);

  return (
    <div>
      <h1>useEffect の依存配列に関数を入れる実験</h1>
      <p>Count: {count}</p>
      <input
        type="button"
        value="Count +1"
        onClick={() => setCount((prev) => prev + 1)}
      />
    </div>
  );
}
image