Skip to content

Instantly share code, notes, and snippets.

@rektdeckard
Created April 25, 2022 06:57
Show Gist options
  • Save rektdeckard/e0ed1e4067fc3d39bcbe188c3b214399 to your computer and use it in GitHub Desktop.
Save rektdeckard/e0ed1e4067fc3d39bcbe188c3b214399 to your computer and use it in GitHub Desktop.
A utility hook for measuring an element's size
import { useEffect, useState } from "react";
function useElementSize(ref: React.RefObject<HTMLElement>) {
const [size, setSize] = useState<DOMRectReadOnly>(new DOMRectReadOnly());
useEffect(() => {
if (ref.current && !!window?.ResizeObserver) {
const observer = new ResizeObserver(([entry]) => {
setSize(entry.contentRect);
});
observer.observe(ref.current);
return () => {
observer?.disconnect();
};
}
}, []);
return size;
}
export default useElementSize;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment