Getting Started
App Providerglobal.d.tsThemesTypes
cn(...args)Text ParserUnits Converters
AnchorAvatarBreadcrumbBurgerButtonCardCarouselCheckerCodeColor PickerCommandConfettiCopyButtonDouble Helix WordsFloating IndicatorGroupHighlight TextIndicatorInputKbdLabelLoaderPaginationPassword RequirementPolymorphic SlotProgressProseRatingRunning AreaScroll AreaSheetsSkeletonSliderStackSvgTableTabsTextareaTimelineTimesToasterTooltipTyping WordsTypography
useClickOutsideuseClipboarduseDeviceInfouseDialoguseDidUpdateuseDirectionuseDisclosureuseDocumentTitleuseDocumentVisibilityuseElementInfouseEyeDropperuseFetchuseFullscreenuseGeoLocationuseHotkeysuseHoveruseIduseImagePopupuseInputStateuseIntersectionuseIntervaluseIsomorphicEffectuseListStateuseLocalStorageuseMeasureScrollbaruseMediaQueryuseMergedRefuseMouseuseMoveuseMutationObserveruseNetworkuseOpenStateuseOrientationuseOSusePaginationusePWAInstalleruseRandomColorsuseReducedMotionuseReloaduseResizeObserveruseScrollIntoViewuseStateHistoryuseTimeoutuseTouchuseTriggeruseUncontrolleduseValidatedStateuseViewportSizeuseWindowEventuseWindowScroll
Docs
Web
Hooks
useMergedRef
useMediaQuery

Reactively matches CSS media queries in JavaScript.

useMouse

Observes real-time mouse position and activity.


Edit this page on GitHub
  • Started
  • Utilities
  • Configuration
  • Components
  • Hooks
  • Examples
  • Github
  • Contributing
⌘+J

© 2025 oeri rights MIT


Designed in Earth-616

Built by oeri

useMergedRef

Merges multiple refs into one, so they can be passed to a single element.

Usage

mergeRefs()

import { useRef } from "react";
import { mergeRefs } from "@/hooks/use-merged-ref";
 
export const MyComponent = React.forwardRef<React.ElementRef<"div">, React.ComponentPropsWithoutRef<"div">>((props, ref) => {
  const myRef = useRef();
 
  return <div ref={mergeRefs(myRef, ref)} {...props} />;
});
MyComponent.displayName = "MyComponent";

createRefs()

import { createRefs } from "@/hooks/use-merged-ref";
 
export enum Structure {
  Root = "root",
  Wrap = "wrap",
  Inner = "inner",
}
 
export function MyComponent() {
  const refs = createRefs<HTMLDivElement, `${Structure}`>(Object.values(Structure));
 
  // ...more actions for each ref
 
  return (
    <div ref={refs.root}>
      <div ref={refs.wrap}>
        <div ref={refs.inner}>inner<div/>
        <div ref={refs.inner}>inner<div/>
      </div>
 
      <div ref={refs.wrap}>
        <div ref={refs.inner}>inner<div/>
        <div ref={refs.inner}>inner<div/>
      </div>
    </div>
  )
}

useMergedRef()

import { useRef } from "react";
import { useHover, useMergedRef, useMove } from "@/hooks";
 
export function MyComponent() {
  const myRef = useRef();
  const { ref: moveRef } = useMove<HTMLDivElement>();
  const { ref: hoverRef } = useHover<HTMLDivElement>();
 
  const mergedRef = useMergedRef(myRef, moveRef, hoverRef);
 
  return <div ref={mergedRef} />;
}

Source Codes

Full working code example, including necessary markup and styles. You can copy and paste this code directly to start using the component immediately.

use-merged-ref.ts