Skip to content

Commit 1df6f91

Browse files
committed
fix: refactor ResizeObserver loop in Helpers.tsx
1 parent c73a2c2 commit 1df6f91

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

src/components/common/helpers/Helpers.tsx

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,26 +1114,21 @@ export const reloadToastBody = () => {
11141114

11151115
export function useHeightObserver(callback): [RefObject<HTMLDivElement>] {
11161116
const ref = useRef(null)
1117-
const callbackRef = useRef(callback)
11181117

1119-
useLayoutEffect(() => {
1120-
callbackRef.current = callback
1121-
}, [callback])
1122-
1123-
const handleHeightChange = useCallback(() => {
1124-
callbackRef.current?.(ref.current.clientHeight)
1125-
}, [callbackRef])
1126-
1127-
useLayoutEffect(() => {
1118+
useEffect(() => {
11281119
if (!ref.current) {
11291120
return
11301121
}
1131-
const observer = new ResizeObserver(handleHeightChange)
1122+
const observer = new ResizeObserver(() => {
1123+
/* this will prevent infinite loop */
1124+
/* the callback will be called only before the next repaint */
1125+
window.requestAnimationFrame(callback)
1126+
})
11321127
observer.observe(ref.current)
11331128
return () => {
11341129
observer.disconnect()
11351130
}
1136-
}, [handleHeightChange, ref])
1131+
}, [callback])
11371132

11381133
return [ref]
11391134
}

0 commit comments

Comments
 (0)