UseResizeObserver
guarahooks/use-resize-observerFreeHook
Observes size changes of an element using the Resize Observer API
Live preview
live · rendered by the registry
Rendered by guarahooks on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://guarahooks.com/r/use-resize-observer.jsonSource
1'use client';23import { useCallback, useEffect, useRef } from 'react';45// Types6interface UseResizeObserverProps<T extends Element = Element> {7 target: React.RefObject<T | null>;8 options?: ResizeObserverOptions;9 callback: (entries: ResizeObserverEntry[], observer: ResizeObserver) => void;10}1112export function useResizeObserver<T extends Element = Element>({13 target,14 options,15 callback,16}: UseResizeObserverProps<T>) {17 const observerRef = useRef<ResizeObserver | null>(null);18 const prevTargetRef = useRef<T | null>(null);1920 const disconnect = useCallback(() => {21 if (observerRef.current) {22 observerRef.current.disconnect();23 observerRef.current = null;24 }25 }, []);2627 useEffect(() => {28 const node = target.current;29 if (!node) return;3031 if (prevTargetRef.current !== node) {32 disconnect();33 prevTargetRef.current = node;34 }3536 observerRef.current = new ResizeObserver((entries, obs) => {37 callback(entries, obs);38 });3940 observerRef.current.observe(node, options);4142 return () => {43 disconnect();44 };45 }, [target, options, callback, disconnect]);4647 return {48 disconnect,49 };50}
Files it writes
More from guarahooks
All 100 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| UseAbortControlleruse-abort-controller | guarahooks | Hooks | Free | no deps | |
| UseArrayStateuse-array-state | guarahooks | Hooks | Free | no deps | |
| UseAxiosuse-axios | guarahooks | Hooks | Free | no deps | |
| UseBatteryStatususe-battery-status | guarahooks | Hooks | Free | no deps | |
| UseBetterAuthuse-better-auth | guarahooks | Hooks | Free | no deps | |
| UseClickOutsideuse-click-outside | guarahooks | Hooks | Free | no deps | |
| UseConfirmuse-confirm | guarahooks | Hooks | Free | no deps | |
| UseCookieuse-cookie | guarahooks | Hooks | Free | no deps |
