@spaced-out/ui-design-system
Version:
Sense UI components library
29 lines (21 loc) • 592 B
Flow
// @flow strict
import * as React from 'react';
export function useResizeObserver(): [React.Ref<'div'>, number] {
const ref = React.useRef(null);
const [height, setHeight] = React.useState(0);
React.useEffect(() => {
const node = ref.current;
if (!node) {
return;
}
const resizeObserver = new ResizeObserver(([entry]) => {
setHeight(entry.contentRect.height);
});
resizeObserver.observe(node);
setHeight(node.getBoundingClientRect().height);
return () => {
resizeObserver.disconnect();
};
}, []);
return [ref, height];
}