@hitachivantara/uikit-react-core
Version:
UI Kit Core React components.
23 lines (22 loc) • 657 B
JavaScript
import { useMemo } from "react";
//#region src/hooks/useForkRef.ts
var setRef = (ref, value) => {
if (typeof ref === "function") ref(value);
else if (ref) ref.current = value;
};
var useForkRef = (refA, refB) => {
/**
* This will create a new function if the ref props change and are defined.
* This means react will call the old forkRef with `null` and the new forkRef
* with the ref. Cleanup naturally emerges from this behavior.
*/
return useMemo(() => {
if (refA == null && refB == null) return null;
return (refValue) => {
setRef(refA, refValue);
setRef(refB, refValue);
};
}, [refA, refB]);
};
//#endregion
export { useForkRef };