通过防抖动代码解决ResizeObserver loop completed with undelivered notifications.

通过防抖动代码解决ResizeObserver loop completed with undelivered notifications.

  • 一、报错内容
  • 二、解决方案
      • 解释:


一、报错内容

我通过el-tabs下的el-tab-pane切换到el-table出现的报错,大致是渲染宽度出现了问题
在这里插入图片描述

二、解决方案

扩展原生的 ResizeObserver 类,并在其回调函数上应用防抖功能。

  1. 导入 debounce 函数:确保从 lodash 中正确导入 debounce 函数。假设的导入语句是正确的 (import { debounce } from "lodash";),则可以正确使用 lodash 提供的防抖函数。

  2. 正确应用防抖:在构造函数中,试图对回调函数应用防抖是正确的做法。但是,由于 super() 调用父类构造函数的方式,可能需要稍作调整以确保其正确工作。

这里是后的代码示例,正确地将防抖应用到 ResizeObserver 的回调函数中:

import { debounce } from "lodash";const NativeResizeObserver = window.ResizeObserver;class DebouncedResizeObserver extends NativeResizeObserver {constructor(callback, options) {const debouncedCallback = debounce(entries => {callback(entries);}, 100);super(debouncedCallback, options);}
}window.ResizeObserver = DebouncedResizeObserver;

解释:

  • 导入语句:确保 import { debounce } from "lodash"; 在代码片段之前正确地导入了 lodash 的 debounce 函数(如果使用的是 ES 模块)。

  • 类定义

    • DebouncedResizeObserver:这是一个新的类,扩展自 NativeResizeObserver(原生的 ResizeObserver)。
    • 构造函数
      • 接受 callbackoptions 作为参数。
      • 在构造函数内部,使用 debounce 函数将 callback 函数包装,并设置了 100 毫秒的延迟。
      • super() 方法调用 NativeResizeObserver 的构造函数,并传入经过防抖处理的 debouncedCallbackoptions
  • 使用方法

    • 将默认的 ResizeObserver 替换为 DebouncedResizeObserver。现在,每当创建一个 new ResizeObserver(callback) 时,它都会在触发回调之前自动对其进行防抖处理。

这种设置确保 ResizeObserver 的回调函数在触发之前经过防抖处理,以避免由频繁触发 resize 事件引起的性能问题。可以根据具体需求调整防抖的延迟时间(本例中为 100 毫秒)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DevOps学习回顾01-技能发展路线-岗位能力-体系认知

事为先,人为重–事在人为 参考来源: 极客时间专栏:DevOps实战笔记,作者:石雪峰 课程链接:https://time.geekbang.org/column/intro/235 时代的典型特征 VUCA VUCA 是指易变性(Volatility&…

破局者:Codebeamer如何打破传统束缚,开启工程新纪元

飞速发展的数字时代,一场深刻的数字化革命正在重塑各行各业的价值链条,为产品开发组织带来了前所未有的挑战。随着电子技术和软件组件在产品设计中的地位日益凸显,传统的工程实践正经历着一场深刻的变革。为了顺应这一潮流,企业必…

【碳排放控排1006】碳排放控排企业名单数据集,探索绿色生产!

今天给大家分享的是国内顶级期刊2023发表论文《碳排放规制、企业减排激励与全要素生产率——基于中国碳排放权交易机制的准自然实验》中使用到的重要数据集——碳排放控排企业名单,该论文从企业生产效率视角对论文进行研究,发现碳排放权交易机制显著提升…

植物大战僵尸杂交版V2.1快速刷金币的方法(新号适用,无需自带招财猫)

📝个人主页:哈__ 期待您的关注 目录 1. 💻游戏介绍 2. 🔥快速刷取金币的办法(我是新号测试的) 2.1 无招财猫 2.2 有招财猫 《植物大战僵尸杂交版》是一款在原版《植物大战僵尸》基础上进行了创新的塔防…

Java学习【深入解读File类:从基础到高级的完整指南】

Java学习【深入解读File类:从基础到高级的完整指南】 ⭐File的概述和构造方法⭐File常见的成员方法🌙构造方法🌙length()🌙getAbsoluteFile()和getPath()🌙getName()和lastModified() ⭐文件的创建和删除⭐获取并遍历 …

【OpenHarmony开发】 tracepoint的机制总结

一、tracepoint 的机制 1.1 DECLARE_HOOK 解析 DECLARE_HOOK(vendor_bond_check_dev_link,TP_PROTO(const struct bonding *bond, const struct slave *slave, int *state), TP_ARGS(bond, slave, state)); ​ // 在已经实现如下宏定义的前提下 // CONFIG_TRACEPOINTS 和 CO…

AbMole带你探索颅内压力与肌肉生长的联系:一项突破性研究

在生物医学领域,颅内压力(ICP)的调控机制一直是研究的热点。最近,一项发表在《PLOS ONE》上的研究为我们揭示了颅内压力与后颅窝肌肉生长之间的潜在联系,为我们理解某些慢性头痛的成因提供了新的视角。 颅内压力的异常…

temu跨境选品师是怎么样的一个项目?

TEMU(特穆)跨境选品师项目,作为一项创新的全球商品采购和选品服务,正在逐步改变消费者对于跨境电商产品的认知和选择方式。这个项目不仅仅是一个简单的商品推荐平台,更是一种以数据驱动的精准选品策略的体现,为消费者提供了全新的…

Spring Boot集成vavr快速入门demo

1.什么是vavr? 初闻vavr,感觉很奇怪,咋这个名字,后面看到它的官网我沉默了,怀疑初创团队付费资讯了UC震惊部如何取名字,好家伙,vavr就是java这四个字倒过来,真的是’颠覆’了java……

为什么Mid journey很容易就能做出很有氛围感的图而SD却容易做图很丑?

前言 6月12日,Midjourney更新了一项新的功能——模型个性化,这一项功能最重要的作用就是能够让生成的图像更加符合你自己的审美标准。就像每个艺术家都有自己的独特风格一样,有了这项模型个性化功能的加持,每个人都能生成具有鲜明…

【机器学习】第5章 朴素贝叶斯分类器

一、概念 1.贝叶斯定理: (1)就是“某个特征”属于“某种东西”的概率,公式就是最下面那个公式。 2.朴素贝叶斯算法概述 (1)是为数不多的基于概率论的分类算法,即通过考虑特征概率来预测分类。 …

C#利用SignalR实现通信事例Demo

1.服务端安装SignalR的Nuget包 dotnet add package Microsoft.AspNet.SignalR --version 2.4.3 2.接下来,创建一个ChatHub类,它是SignalR通信的核心: using Microsoft.AspNetCore.SignalR;public class ChatHub : Hub {public static Dict…

MATLAB 二维平面绘图

x 0:0.01:2pi: 大家还记得这个是什么意思吧 就是0到2π 每次所取的数 是相差0.01进行选取的 ysin(x): figure (这个意思就是建立一个幕布) plot(x,y) 这个主要是绘制当前的二维平面的图 但是大家会发现这张图里没有标…

反激开关电源输入电解电容选型及计算

输入电解电容波形如下 计算 1、输入电解电容经验选取法 当输入电压为220V20%(AC176-264V)时 按照输出功率选取:W/μF 耐压(400V,输入176-264V最高DC峰值373V) 当输入电压为11020%时(AC88-132V…

windows服务器一台机器安装多个mysql实例

1、复制安装mysql安装包 2、修改配置文件信息 标注红色部分是需要修改成复制后的包信息 [mysqld] default-time_zone8:00basedirD:/tools/MySQL-Cluster/mysql-53306 datadirD:/tools/MySQL-Cluster/mysql-53306/data default-storage-engineINNODB sql-mode"STRICT_TRANS…

网络运维:企业数字化转型的基石

在数字化时代,网络已经成为企业运营不可或缺的一部分。网络运维作为确保网络稳定、安全和高效运行的关键环节,其重要性不言而喻。本文将探讨网络运维的重要性,并分析其在企业数字化转型中的作用。 网络运维的定义 网络运维,也称…

Amazon Systems Manager中补丁合规性定期扫描

问题 需要使用Amazon Systems Manager对EC2补丁合规性定期扫描。 步骤 点击如下入口界面: 权限使用默认配置,勾选“Scan instances for missing patches daily”每天扫描EC2实例是否存在补丁,来完成合规检查,选择所有实例&…

Zabbix自定义监控JAVA进程

一.定义脚本 二 .ZABBIX得agent允许以root身份执行 三. Zabbix测试自定item是否成功 四.ZABBIX服务端web添加新得item项 五.查看最新数据,取值成功

每日AI资讯-20240618

1. 3D 版 SORA 来了! DreamTech 官宣了其高质量 3D 生成大模型 Direct3D,并公开了相关学术论文 Direct3D: Scalable Image-to-3D Generation via 3D Latent Diffusion Transformer。 链接:https://arxiv.org/abs/2405.14832 这是首个公开发布…

分享一下,如何搭建个人网站的步骤

在这段充满探索与创造的奇妙旅途中,我就像一位耐心的建筑师,在数字世界的荒原上精心雕琢,两周的时光缓缓流淌。每天,我与代码共舞,手执HTML、CSS与JavaScript这三大构建魔杖,一砖一瓦地筑起了梦想中的网络城…