本文介绍 Element Plus 中常见的 ResizeObserver loop limit exceeded 报错原因及解决方法。通过引入防抖函数包装 ResizeObserver 回调,限制高频触发频率,从而避免浏览器报错。该方法适用于 Vue 3 项目,可直接在 main.js 或 app.vue 中全局配置生效。
报错现象与原因
在开发过程中,控制台可能会频繁出现 ResizeObserver loop limit exceeded 的警告信息。

该报错的具体表现如上图所示。网络上常见的忽略错误方案(如在 onerror 钩子中捕获)往往无法彻底解决,因此这里提供一种更有效的代码级修复方案。
核心解决方案
const debounce = (fn, delay) => {
let timer = null;
return function () {
let context = this;
let args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
}
}
const _ResizeObserver = window.ResizeObserver;
window.ResizeObserver = class ResizeObserver extends _ResizeObserver{
constructor(callback) {
callback = debounce(callback, 16);
super(callback);
}
}代码配置位置
将以下代码片段插入到 main.js 或 app.vue 文件中即可生效,或者放置在触发该问题的页面之前的任意入口文件中。
总结
通过上述方式,可以有效抑制因组件尺寸频繁变化导致的 ResizeObserver 无限循环报错问题。
至此,关于 Element Plus 中 ResizeObserver loop limit exceeded 报错的解决方法介绍完毕。如需了解更多相关报错处理技巧,建议查阅本站往期文章或继续关注后续更新内容。