setIntervalとクリーンアップ関数を学びます
React - 第3章: React Hooks - useEffect
useEffectでは、クリーンアップ関数を使って、処理を止めることができます。 1秒ごとにカウントアップするタイマーを作って、停止できるようにしてみましょう。
setIntervalでタイマーを設定します:
useEffect(() => {
if (isRunning) {
const timerId = setInterval(() => {
setSeconds(s => s + 1);
}, 1000); // 1000ミリ秒 = 1秒
// クリーンアップ関数
return () => {
clearInterval(timerId);
};
}
}, [isRunning]);クリーンアップ関数の役割:
ポイント:setIntervalを使ったら、必ずclearIntervalでクリアします。これを忘れるとタイマーが止まりません。
経過時間: 5秒 [停止]