react ResizeObserver loop completed with undelivered notifications报错信息
时间: 2023-11-14 19:09:13 浏览: 553
这个报错信息通常是由于使用了 ResizeObserver 监听元素大小变化时,出现了循环调用的情况。这种情况下,浏览器会限制回调函数的执行次数,以避免性能问题。
解决方法是在回调函数中避免对被观察元素的大小进行修改,或者使用 debounce 或 throttle 函数来限制回调函数的执行频率。
如果你使用的是 React,可以考虑使用 react-resize-detector 库来代替 ResizeObserver。
相关问题
react ResizeObserver loop completed with undelivered notifications.
`ResizeObserver` 是一个用于监听元素尺寸变化的Web API。当元素的尺寸发生变化时,`ResizeObserver` 提供了一种方式来异步地触发回调函数,以获取新的尺寸。当你遇到 "ResizeObserver loop completed with undelivered notifications" 这样的警告时,这意味着在浏览器的内部队列中还有未处理的尺寸变化通知,而回调函数已经再次被触发。
出现这种警告的原因可能有多种,比如频繁的尺寸变化导致 `ResizeObserver` 的回调函数被连续调用,而浏览器还在处理前一个回调的时候,新的尺寸变化已经发生。这通常会在以下情况下发生:
1. 使用了复杂的动画或者布局变化,尤其是在移动端。
2. 大量的DOM元素需要监听尺寸变化,可能导致性能问题。
3. 回调函数执行时间较长,导致浏览器来不及处理所有通知。
为了解决这个问题,你可以尝试以下策略:
- 确保回调函数尽可能短小且高效,减少执行时间。
- 对于大量元素的监听,考虑只监听那些真正需要的元素。
- 在回调函数中,使用 `ResizeObserver` 的 `unobserve` 方法来暂停尺寸监听,直到需要时再重新开始监听。
- 对于连续的尺寸变化,可以考虑使用防抖(debounce)或节流(throttle)技术来减少触发回调的频率。
选择器报错ResizeObserver loop completed with undelivered notifications
根据提供的引用[1],这个错误通常是由于使用了某些库或框架,这些库或框架使用了ResizeObserver API,但是在某些情况下,这个API会导致循环调用,从而导致报错。这个问题通常可以通过升级相关库或框架来解决,或者使用Polyfill来修复。
如果你使用的是React,可以尝试升级React版本到16.13.0或以上,这个版本修复了这个问题。如果你使用的是Angular,可以尝试升级到Angular 9或以上版本,这个版本也修复了这个问题。
如果升级不可行,你可以尝试使用ResizeObserver的Polyfill来修复这个问题。Polyfill是一种代码片段,可以在不支持某些API的浏览器中模拟这些API的行为。你可以在GitHub上找到ResizeObserver的Polyfill,将其添加到你的项目中即可。
另外,你也可以尝试使用其他的选择器库或框架,例如jQuery或Lodash等,这些库或框架可能不会使用ResizeObserver API,从而避免这个问题的出现。
阅读全文