useMergeRefs
azemmur/hooks-use-merged-refsFreeHook
A hook for merging multiple refs into a single stable callback ref.
Install it
npx shadcn@latest add https://azemmur.raouf.codes/r/hooks-use-merged-refs.jsonSource
1import { useCallback, type Ref, type RefCallback } from 'react';23/**4 * React 19 compliant hook to merge multiple refs.5 * Replaces the deprecated 'MutableRefObject' with 'RefObject'.6 */7export function useMergeRefs<T>(8 ...refs: (Ref<T> | undefined | null)[]9): RefCallback<T> {10 return useCallback((value: T | null) => {11 const cleanups: Array<void | (() => void)> = [];1213 refs.forEach((ref) => {14 if (typeof ref === 'function') {15 const cleanup = ref(value);16 if (typeof cleanup === 'function') {17 cleanups.push(cleanup);18 }19 } else if (ref && typeof ref === 'object') {20 (ref as { current: T | null }).current = value;21 }22 });2324 if (cleanups.length > 0) {25 return () => {26 cleanups.forEach((cleanup) => {27 if (typeof cleanup === 'function') cleanup();28 });29 };30 }31 // eslint-disable-next-line react-hooks/exhaustive-deps32 }, refs);33}
Files it writes
More from Azemmur
All 27 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| useFocusTraphooks-use-focus-trap | Azemmur | Hooks | Free | no deps | |
| useIsMobilehooks-use-is-mobile | Azemmur | Hooks | Free | no deps | |
| useKeyActionshooks-use-key-actions | Azemmur | Hooks | Free | no deps | |
| usePinchZoomhooks-use-pinch-zoom | Azemmur | Hooks | Free | no deps |
