useLayoutEffect 和 useEffect 都是 React 提供的 Hook,用于处理副作用,但它们在执行时机上有重要区别。
主要区别
| 特性 | useEffect |
useLayoutEffect |
|---|---|---|
| 执行时机 | 在浏览器绘制之后异步执行 | 在浏览器绘制之前同步执行 |
| 对用户的影响 | 可能导致布局闪烁 | 阻止浏览器绘制直到 effect 完成 |
| 使用场景 | 数据获取、订阅等 | 需要同步读取/操作 DOM 的情况 |
| 性能影响 | 对渲染性能影响较小 | 可能阻塞渲染,导致性能问题 |
2025/2/20大约 2 分钟
