请问老师这两种写法的区别是什么呢?
来源:15-4 详解Hook之useEffect函数

Panda_io
2023-05-07
// 错误写法,界面count一直显示 1
const [count, setCount] = useState(0)
useEffect(() => {
console.log('call useEffect')
setInterval(() => {
setCount(count + 1);
}, 1000)
}, [])
// 正确写法,界面一直更新 + 1
useEffect(() => {
console.log('call useEffect')
setInterval(() => {
setCount(count => count + 1);
}, 1000)
}, [])
我的理解,错误写法是因为函数闭包的原因count在内存中保留,且值不会再被更新,值一直是0,所以每次执行setCount(count + 1),count都是 0 ,正确写法中count => count + 1,此时count是从state中取到的最新值,所以界面能正常更新
写回答
1回答
-
西门老舅
2023-05-08
你好,你说的是这样的,完全正确
012023-05-08
相似问题