diff --git a/packages/virtual-core/src/index.ts b/packages/virtual-core/src/index.ts index 2b3d4ff18..9a1b68718 100644 --- a/packages/virtual-core/src/index.ts +++ b/packages/virtual-core/src/index.ts @@ -84,15 +84,17 @@ export const observeElementRect = ( } const observer = new targetWindow.ResizeObserver((entries) => { - const entry = entries[0] - if (entry?.borderBoxSize) { - const box = entry.borderBoxSize[0] - if (box) { - handler({ width: box.inlineSize, height: box.blockSize }) - return + window.requestAnimationFrame(() => { + const entry = entries[0] + if (entry?.borderBoxSize) { + const box = entry.borderBoxSize[0] + if (box) { + handler({ width: box.inlineSize, height: box.blockSize }) + return + } } - } - handler(element.getBoundingClientRect()) + handler(element.getBoundingClientRect()) + }) }) observer.observe(element, { box: 'border-box' }) @@ -363,8 +365,10 @@ export class Virtualizer< } return (_ro = new this.targetWindow.ResizeObserver((entries) => { - entries.forEach((entry) => { - this._measureElement(entry.target as TItemElement, entry) + window.requestAnimationFrame(() => { + entries.forEach((entry) => { + this._measureElement(entry.target as TItemElement, entry) + }) }) })) }