ReactJS - 使用 setInterval 减少计时器
ReactJS - Using setInterval for decreasing timer
我正在尝试在 React 中创建一个计时器应用程序。该应用程序通过在用户单击按钮时调用 setInterval 计时器来工作。
const [timer, setTimer] = useState(1500) // 25 minutes
const [start, setStart] = useState(false)
const onClick = () => {
if (!start) {
var tick = setInterval(() => {
setStart(true)
if (timer < 0) {
clearInterval(tick)
}
setTimer(timer => timer - 1)
console.log(timer)
}, 1000)
}
}
即使计时器每秒都在减少,console.log(timer)
仍然会打印出 1500 而不会减少。此后我无法停止计时器。
set
函数是异步的,所以 console.log
还没有新值。
将日志放入函数中 setTimer
:
...
setTimer(timer => {
console.log(timer - 1)
return timer - 1;
})
...
我正在尝试在 React 中创建一个计时器应用程序。该应用程序通过在用户单击按钮时调用 setInterval 计时器来工作。
const [timer, setTimer] = useState(1500) // 25 minutes
const [start, setStart] = useState(false)
const onClick = () => {
if (!start) {
var tick = setInterval(() => {
setStart(true)
if (timer < 0) {
clearInterval(tick)
}
setTimer(timer => timer - 1)
console.log(timer)
}, 1000)
}
}
即使计时器每秒都在减少,console.log(timer)
仍然会打印出 1500 而不会减少。此后我无法停止计时器。
set
函数是异步的,所以 console.log
还没有新值。
将日志放入函数中 setTimer
:
...
setTimer(timer => {
console.log(timer - 1)
return timer - 1;
})
...