为什么在执行runTimer之后,它每秒都会不断地记录0?
const [timer, setTimer] = useState(0)
const runTimer = (x) => {
let interval = setInterval(() => {
setTimer(prev => prev - 1)
console.log(timer)
}, 1000)
}发布于 2020-03-10 21:00:47
该值具有作用域,并且将始终保持不变
尝试将该值记录到外部,因为状态更改将强制呈现。同样,State永远不应该“变异”。状态应该始终是一个新对象,而不是一个突变。
const [timer, setTimer] = useState(0)
const runTimer = (x) => {
let interval = setInterval(() => {
setTimer(prev => prev - 1)
}, 1000)
}
console.log(timer)你的第二个问题
let interval的作用域意味着您只能在该级别执行clearInterval。我不确定用这种方法做这件事的好方法。您可能希望使用钩子useEffect来设置间隔。
https://stackoverflow.com/questions/60618142
复制相似问题