reactjs - 使用 setInterval 函数更新 React 组件的状态
问题描述
我正在研究 React 中的 Timer 实现。
export default function Parent() {
const [count, setCount] = useState(0);
function start() {
setInterval(() => {
setCount(count + 1);
}, 1000);
}
return (
<>
<div>Parent Component</div>
<p> value of count is: {count}</p>
<button onClick={start}>Start counter</button>
</>
);
}
当我单击开始计数器按钮时,它只会增加一次计数,不知何故我发现我需要使用 useEffect。但不知道该怎么做。
请帮忙。
解决方案
经典计时器陈旧状态错误。您正在计时器间隔回调函数中访问关闭的陈旧状态。
这可以通过使用功能状态更新轻松解决,因此您不使用关闭的初始状态值。
export default function Parent() {
const [count, setCount] = useState(0);
function start() {
setInterval(() => {
setCount(count => count + 1);
}, 1000);
}
return (
<>
<div>Parent Component</div>
<p> value of count is: {count}</p>
<button onClick={start}>Start counter</button>
</>
);
}
演示
推荐阅读
- linux - 如何在 HDFS 中创建具有昨天日期的目录
- python - 转换 UTF-8 时字符串对象没有属性“解码”
- angular - 角度下拉菜单更改其他下拉菜单
- ruby-on-rails - 如何将默认错误处理添加到产生可迭代的函数中?
- ibm-watson - IBM Watson Chatbot 无法连接到服务器
- python - 如何在python中包装列表函数?
- javascript - 需要一些帮助调试一个简单的换色器
- python - 并行化python有限元分析
- python - 如何检查列表中是否存在列值中的字符串以及列值是否为“杂项”检查列表是否与熊猫中的列值
- r - 在 R 中使用 dplyr 创建新的属性/列