【发布时间】:2024-01-22 11:44:01
【问题描述】:
我的代码看起来像下面的代码(我删掉了大部分以突出问题)。我试图在单击按钮时调用一个调用 setInterval 的函数来增加父组件的状态。不过,记录的内容只是“0”。 “setPercent”调度函数似乎工作正常——在它被调用后,我知道“percent”正在更新为 1,但是当它在下一个时间间隔返回时,控制台再次记录 0 并且集合再次设置为 1。我假设正在发生的事情是,当创建“clickHandler”函数时,它会硬复制“百分比”的值而不是引用它 - 我不知道为什么以及如何修复它。非常感谢任何帮助!
const Component = () => {
const [percent, setPercent] = useState(0)
const clickHandler = (time) => {
let timer = setInterval(() => {
if (percent < 100) {
console.log('current percent', percent)
setPercent(percent + 1)
} else {
clearInterval(timer)
}
}, time / 100)
}
return (
<div>
<Button onClick={clickHandler} />
</div>
)
}
【问题讨论】:
标签: reactjs use-state react-state