首页 小组 问答 话题 好文 素材 用户 唠叨 我的社区

[代码]类组件和函数组件定时器每秒加1的区别?

天启Lv.1普通用户
2024-08-24 21:05:17
0
18

这就是react经典的闭包陷阱了,原因是在函数组件中,a的值一直是初始值,有几种方案可以解决:
1、把a加到useEffect的第二个参数中,即:

useEffect(() => {
        let timer = setInterval(() => {
            setCount(a + 1);
        }, 1000);

        return () => {
            clearInterval(timer)
        }
    }, [a]);

2、利用函数更新:

useEffect(() => {
        let timer = setInterval(() => {
            setCount(p => p + 1);
        }, 1000);

        return () => {
            clearInterval(timer)
        }
    }, []);

3、用useRef保存count的值

闭包陷阱可以搜索引擎搜一下,有很多相关的内容

天启
天启

59 天前

签名 : 大运河向南是我家   18       0
评论
站长交流