React Hooksを使って、1秒ごとにカウントが1ずつ増えていくだけのシンプルなコンポーネントを作ってみようと思い、下記のようなコードを書いてみました。
MyTimer.tsx
MyTimer.tsx
1import React, { useState } from 'react'; 2 3const MyTimer = () => { 4 const [count, setCount] = useState(0); 5 6 let timerId: NodeJS.Timeout; 7 8 const countup = () => { 9 setCount(count + 1); 10 }; 11 12 const start = () => { 13 timerId = setInterval(countup, 1000); 14 }; 15 16 const stop = () => { 17 clearInterval(timerId); 18 }; 19 20 return ( 21 <div> 22 <h2>My Timer</h2> 23 <div>{String(count)}</div> 24 <button onClick={() => start()}>スタート</button> 25 <button onClick={() => stop()}>ストップ</button> 26 <button onClick={() => setCount(0)}>リセット</button> 27 </div> 28 ); 29}; 30 31export default MyTimer;
useState
で管理している count
を setInterval
で1秒毎にカウントアップしていきたいのですが、これだと思うように動きません。
【環境】
"react: "^16.13.1",
"react-dom": "^16.13.1",
"react-scripts": "3.4.1",
"typescript": "^3.7.5"
どうして動かないのか、どのように改善したらよいか、教えていただけると幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー