Reactで setInterval を使用するには、いくつかの方法があります。
方法1:useEffect フックを使う
useEffect フックを使って、setInterval を呼び出すことができます。
const [count, setCount] = useState(0);
useEffect(() => {
const interval = setInterval(() => {
setCount(count => count + 1);
}, 1000);
return () => clearInterval(interval);
}, []);
return (
<h1>{count}</h1>
);
コードは注意してご使用ください。
方法2:useInterval カスタムフックを使う
useInterval カスタムフックを使って、setInterval のロジックをカプセル化することができます。
import { useInterval } from 'react-use';
const App = () => {
const [count, setCount] = useState(0);
const { interval, clearInterval } = useInterval(() => {
setCount(count => count + 1);
}, 1000);
return (
<div>
<h1>{count}</h1>
<button onClick={clearInterval}>Stop</button>
</div>
);
};
コードは注意してご使用ください。
方法3:setInterval を直接呼び出す
useEffect フックや useInterval カスタムフックを使わずに、setInterval を直接呼び出すこともできます。
const App = () => {
const [count, setCount] = useState(0);
const interval = setInterval(() => {
setCount(count => count + 1);
}, 1000);
useEffect(() => {
return () => clearInterval(interval);
}, []);
return (
<h1>{count}</h1>
);
};
コードは注意してご使用ください。
これらの方法は、それぞれ異なる利点と欠点があります。状況に応じて最適な方法を選択してください。
その他
setInterval を使用するときは、以下の点に注意する必要があります。
- メモリリークを防ぐために、clearInterval を呼び出す
- コンポーネントがアンマウントされるときに、setInterval をクリアする
- パフォーマンスの問題を防ぐために、setInterval の間隔を適切に設定する