我很好奇为什么在 for 循环中设置状态不能按预期工作。
这是我使用钩子的代码。
const [count, setCount] = useState(0);
const onButtonPress = () => {
for(let i=0; i<100; i++){
setCount(i);
}
}
useEffect(()=> {
console.log('useEffect called');
console.log(count);
},[count])
我打电话给按下按钮单击按钮即可运行。
我期望的行为:计数状态 shukd 更新 100 次,从而调用 useEffect 钩子 a 100 次。
实际行为:useEffect 钩子仅在循环的最后一次迭代后被调用一次。
我知道官方的 React 文档说钩子不应该在循环中使用,但他们的解释不是很清楚。
我想了解为什么在循环中调用 setCount 不起作用。
NOTE:我知道还有其他方法可以实现所需的结果,但我有兴趣了解为什么 setCount 不会被多次调用。
状态更新由react批量处理,因此,如果您在处理程序中多次调用相同的状态更新程序,整个操作将被批处理,并且将执行一次更新,这就是您所看到的
另外,当文档说钩子不应该在循环中使用时,他们的意思是钩子,例如useState, useRef, useEffect and so on
而不是 useState 钩子返回的状态更新器
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)