以下のようなソースでsetCount(count+1)のようにしてレンダリング回数を見ていました。
countが増加しないのはわかるのですが、以下の画像のように、'rendered timer'の回数が1回多いように思います。
import { useEffect, useState } from 'react'; export const Timer = () => { const [count, setCount] = useState(0); console.log('rendered timer'); const time = () => { console.log('time'); console.log('count:', count); setCount(count + 1); }; useEffect(() => { console.log('use effect'); const interval = setInterval(time, 5000); console.log('use effect2'); return () => { clearInterval(interval); console.log('clear'); }; }, []); return <div>{count}</div>; };
2回目:setIntervalでtime関数内でsetCountが実行されたとき(countの増加によるstate変更)
3回目:state変更は無いのに再度レンダリングされている。原因不明
この3回目の'redered timer'のレンダリングはなぜ起こっているのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。