哈喽,大家好呀,我是前端理想哥,今天,我们来聊聊useEffect和useLayoutEffect的延迟和同步
的概念。
用过这两个API的同学,应该都知道这两者在执行时机上的区别,还不了解的同学可以详细去看下。
useEffect 的执行时机是组件渲染到屏幕之后延迟执行
,而 useLayoutEffect 的执行时机是在所有的DOM变更之后同步调用effect
。
今天, 我们重点来聊聊这里的延迟和同步到底是什么意思。
所谓的延迟和同步,其实指的就是react的任务调度
。
useEffect
中的延迟执行,指的是effect会在组件渲染任务调度函数结束后,再单独调用一次任务调度函数,这样做的好处就是,effect的调用可以单独进行,不会加长组件渲染的任务时间,也就不会阻碍组件的渲染了。
useLayoutEffect
的同步,指的是,effect和组件渲染是在一个任务调度内,组件渲染完了后,立马开始同步进行effect的执行了。这样做主要是为了让你可以实现一些需要立即执行的功能,但是会加长组件渲染的任务时间,会阻碍组件的渲染。
所以,大多数情况下,如果不是必须的,还是建议大家使用useEffect
,避免对组件更新造成阻塞。
以上,就是所有内容了,我们讲了useEffect和useLayoutEffect的延迟、同步的概念,如果您觉得对您有帮助,欢迎给理想哥一个关注,万分感谢大家