From 1f8c8ee833fe1efafe4879e709316d0c4812bb9c Mon Sep 17 00:00:00 2001 From: Petyo Ivanov Date: Fri, 29 Mar 2024 19:51:41 +0200 Subject: [PATCH] fix: delay resize observer handling --- src/hooks/useSize.ts | 4 +++- src/hooks/useWindowViewportRect.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/hooks/useSize.ts b/src/hooks/useSize.ts index c63c0e76f..782e0c184 100644 --- a/src/hooks/useSize.ts +++ b/src/hooks/useSize.ts @@ -14,7 +14,9 @@ export function useSizeWithElRef(callback: (e: HTMLElement) => void, enabled = t return new ResizeObserver((entries: ResizeObserverEntry[]) => { const element = entries[0].target as HTMLElement if (element.offsetParent !== null) { - callback(element) + requestAnimationFrame(() => { + callback(element) + }) } }) }, [callback]) diff --git a/src/hooks/useWindowViewportRect.ts b/src/hooks/useWindowViewportRect.ts index e02762804..084aa11c2 100644 --- a/src/hooks/useWindowViewportRect.ts +++ b/src/hooks/useWindowViewportRect.ts @@ -45,7 +45,9 @@ export default function useWindowViewportRectRef(callback: (info: WindowViewport React.useEffect(() => { if (customScrollParent) { customScrollParent.addEventListener('scroll', scrollAndResizeEventHandler) - const observer = new ResizeObserver(scrollAndResizeEventHandler) + const observer = new ResizeObserver(() => { + requestAnimationFrame(scrollAndResizeEventHandler) + }) observer.observe(customScrollParent) return () => { customScrollParent.removeEventListener('scroll', scrollAndResizeEventHandler)