上一题下一题

ResizeObserver 触发循环限制、布局抖动风险与组件自适应场景中的注意点

进阶版
来源:meituan中级工程师组件自适应布局抖动ResizeObserver
草稿该题目为草稿状态,前台公开题库中不可见。
答案解析

ResizeObserver 主要用于监听元素尺寸变化,比如容器宽高变化后,让图表、表格、虚拟列表、弹窗内容做自适应调整。它比 window resize 更细粒度,也不需要手动轮询 DOM。

它有一个比较典型的问题是 ResizeObserver loop limit exceeded 或者类似的循环限制警告。这个通常不是说代码一定崩了,而是浏览器检测到 ResizeObserver 回调里又触发了新的布局变化,导致尺寸变化不断级联,超过了浏览器一帧内允许处理的限制。

常见场景比如:

这里监听到宽度变化后,又修改了自身宽度,下一轮又触发 ResizeObserver,就可能形成循环。

在组件自适应场景里需要注意几个点:

第一,ResizeObserver 回调里尽量不要直接修改会影响被监听元素尺

登录后查看完整内容