Skip to content

mergeRefs ​

この関数は複数の ref(RefObject または RefCallback)を受け取り、渡されたすべての ref を更新する単一の ref を返します。 1 つの要素に複数の ref を渡す必要がある場合に便利です。 コールバック ref がクリーンアップ関数を返す場合(React 19)、マージされた ref もクリーンアップ関数を返し、ref が切り離される際にすべてのクリーンアップを実行します。

インターフェース ​

ts
function mergeRefs<T>(
  ...refs: Array<RefObject<T> | RefCallback<T> | null | undefined>
): RefCallback<T>;

パラメータ ​

  • refsrequired · Array<RefObject<T> | RefCallback<T> | null | undefined>

    マージする ref の配列。各 ref は RefObject または RefCallback です。

戻り値 ​

  • RefCallback<T>

    渡されたすべての ref を更新する単一の ref コールバック。

使用例 ​

tsx
forwardRef(function Component(props, parentRef) {
  const myRef = useRef(null);

  return <div ref={mergeRefs(myRef, parentRef)} />;
});
tsx
function Component(props) {
  const ref = useRef(null);
  const [height, setHeight] = useState(0);

  const measuredRef = useCallback(node => {
    if (node == null) {
      return;
    }

    setHeight(node.offsetHeight);
  }, []);

  return <div ref={mergeRefs(measuredRef, ref)} />;
}

MIT ライセンスの下で配布されています。