请问老师这两种写法的区别是什么呢?

来源: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

你好,你说的是这样的,完全正确

0
1
Panda_io
感谢老师答疑!
2023-05-08
共1条回复

Vue3 + React18 + TS4入门到实战 系统学习3大热门技术

专为初级前端人员设计,系统性学习三大技术

264 学习 · 182 问题

查看课程