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

本文主要是介绍通过防抖动代码解决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 毫秒)。

这篇关于通过防抖动代码解决ResizeObserver loop completed with undelivered notifications.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075153

相关文章

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas