Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/wojtekmaj/react-hooks. A collection of React Hooks.
hooks react react-hooks
Something went wrong. Try again.
971 B · 31 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132import { useEffect } from 'react';
/** * Observes a given element using ResizeObserver. * * @param {Element} [element] Element to attach ResizeObserver to * @param {ResizeObserverOptions} [options] ResizeObserver options. WARNING! If you define the * object in component body, make sure to memoize it. * @param {ResizeObserverCallback} observerCallback ResizeObserver callback. WARNING! If you define * the function in component body, make sure to memoize it. * @returns {void} */export default function useResizeObserver( element: Element | null, options: ResizeObserverOptions | undefined, observerCallback: ResizeObserverCallback,): void { useEffect(() => { if (!element || !('ResizeObserver' in window)) { return undefined; }
const observer = new ResizeObserver(observerCallback);
observer.observe(element, options);
return () => { observer.disconnect(); }; }, [element, options, observerCallback]);}