我有一个组件,我想在屏幕上呈现HTML之前进行一些计算。由于useEffect
和useLayoutEffect
都可以处理此任务,因此我的问题是将它们都放在代码中,useEffect
和useLayoutEffect
中哪个将首先被触发?>
欢呼
答案 0 :(得分:3)
这仍然是您自己的编码方式,但是这里的信息很少,您可以随时进行更多研究。
useEffect(() => {
// do side effects
return () => /* cleanup */
}, [dependency, array]);
useLayoutEffect(() => {
// do side effects
return () => /* cleanup */
}, [dependency, array]);
useEffect
异步运行,并且在将渲染绘制到屏幕上之后。
这是useEffect
和
另一方面,
useLayoutEffect
在渲染之后但屏幕更新之前同步运行
useLayoutEffect
运行,React等待它完成。因此,正如@ Robert 建议大多数时候使用useEffect
。
答案 1 :(得分:2)
UseLayoutEffect是同步的,它将阻止您的应用程序。还会导致其他渲染。
我建议使用useEffect并在某些情况下保留useLayoutEffect。
答案 2 :(得分:0)
useEffect()
在浏览器绘制之后运行,useLayoutEffect()
在绘制之前运行。因此,useLayoutEffect()
在 useEffect()
之前先运行。您可以通过在两个函数中放置 console.log()
来自行测试,看看哪个先执行。