element-plus 报错 ResizeObserver loop limit exceeded 解决

ResizeObserver loop limit exceeded 是一个常见的浏览器控制台警告,通常在使用 ResizeObserver API 时触发。对于使用 Element Plus 的 Vue 3 项目,这个错误可能会影响组件的正常渲染和功能。下面将详细解释这个错误的原因以及如何解决它。

错误原因

1. ResizeObserver 的工作原理

ResizeObserver 是一个用于监听 DOM 元素大小变化的 API。当被观察的元素尺寸发生变化时,ResizeObserver 会触发回调函数。在 Element Plus 中,许多组件依赖 ResizeObserver 来自动调整大小和布局。

2. 循环触发

ResizeObserver loop limit exceeded 错误通常是由于以下原因引起的:

无限循环更新:在 ResizeObserver 的回调函数中对 DOM 进行修改,导致再次触发尺寸变化,进而再次调用回调函数,如此反复,超出了浏览器设定的循环限制。

频繁触发变化:快速连续的尺寸变化(例如窗口大小频繁调整)可能导致 ResizeObserver 回调函数被频繁调用,超过浏览器的处理能力。

复制代码
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);
  }
}

**把上面代码粘在app.vue

或者main.js中都可以**

相关推荐
ai_xiaogui4 分钟前
PanelAI前端全面升级!私有化部署AI面板控制台+生态市场一键管理详解
前端·人工智能·comfyui一键部署·生态市场算力共享·ai面板控制台·panelai私有化部署·大模型前端管理
Jelena157795857926 分钟前
1688.item_get_app接口:包装尺寸重量信息深度解析
开发语言·前端·python
NGC_661113 分钟前
JDK1.7 与 JDK1.8 ConcurrentHashMap:从分段锁到桶级锁的进化
java·开发语言
酉鬼女又兒14 分钟前
零基础快速入门前端DOM核心知识点详解与蓝桥杯Web赛道备考指南(可用于备赛蓝桥杯Web应用开发)
前端·职场和发展·蓝桥杯
大黄说说15 分钟前
PHP 数组 vs SPL 数据结构:队列与栈场景下的性能对决
开发语言·数据结构·php
rookie软工17 分钟前
Qt代理委托实现
开发语言·python·qt
daols8820 分钟前
vue甘特图vxe-gantt实现点击任务条弹出编辑表单
前端·vue.js·甘特图·vxe-gantt
leaves falling21 分钟前
C++类和对象(3)(初始化列表,类型转换,static成员,友元)
java·开发语言·c++
宵时待雨22 分钟前
C++笔记归纳15:封装map & set
开发语言·数据结构·c++·笔记·算法
zfyljx23 分钟前
Taro+react input框在文字中间插入光标会跳到末尾问题
javascript·react.js·taro