首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

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

发布于 2024-08-24 21:05:17
0
384

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

这就是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的值

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

评论
一个月内的热帖推荐
天启
Lv.1普通用户

259

帖子

20

小组

518

积分

赞助商广告
站长交流