小编don*_*han的帖子

阅读布局时,`useLayoutEffect` 比`useEffect` 更可取吗?

useLayoutEffectvs 的一个不同之useEffect处在于useLayoutEffect它将在 DOM 突变之后和浏览器绘制阶段之前同步触发。(参考

但是,我遇到了一些文章,它们似乎都建议useLayoutEffect用于阅读布局。

反应文档:

签名与 useEffect 相同,但在所有 DOM 突变后同步触发。使用它从 DOM 读取布局并同步重新渲染。在浏览器有机会绘制之前, useLayoutEffect 内计划的更新将同步刷新。

肯特·C·多兹

useLayoutEffect:如果您需要改变 DOM 和/或确实需要执行测量

奥汉斯·伊曼纽尔:

在可能的情况下,如果您希望在浏览器绘制过程中不显眼,请选择 useEffect Hook。在现实世界中,这通常是大多数时候!好吧,除非你从 DOM 读取布局或者做一些需要尽快绘制的与 DOM 相关的事情。

据我了解,在useEffect触发时,浏览器已经通过了布局和绘制阶段,因此读取布局useEffect应该完全没问题。

所以我的问题是:阅读布局时useLayoutEffect更可取useEffect,如果是,为什么?考虑到我只是阅读了布局,并没有在效果中执行任何额外的状态更改。

reactjs react-hooks use-effect

5
推荐指数
1
解决办法
479
查看次数

标签 统计

react-hooks ×1

reactjs ×1

use-effect ×1