Skip to content

Instantly share code, notes, and snippets.

@Spidy88
Created July 21, 2025 21:57
Show Gist options
  • Select an option

  • Save Spidy88/93e2cec6091e12f27f195693a24ca877 to your computer and use it in GitHub Desktop.

Select an option

Save Spidy88/93e2cec6091e12f27f195693a24ca877 to your computer and use it in GitHub Desktop.
useResizeObserver
import { useLayoutEffect, useRef } from 'react';
export function useResizeObserver<E extends HTMLElement = HTMLElement>(
onResize: (el: E) => unknown,
) {
const ref = useRef<E>(null);
useLayoutEffect(() => {
if (!ref.current) {
return;
}
const resizeObserver = new ResizeObserver((entries) =>
onResize(entries[0].target as E),
);
resizeObserver.observe(ref.current);
return () => resizeObserver.disconnect();
}, [onResize]);
return { ref };
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment