rooks
Version:
Essential React custom hooks ⚓ to super charge your components!
36 lines (35 loc) • 940 B
JavaScript
import { useMemo } from "react";
function setRef(ref, value) {
if (typeof ref === "function") {
ref(value);
}
else if (ref !== null && ref !== undefined) {
ref.current = value;
}
}
/**
* useMergeRefs
* Merges multiple refs into a single function ref.
* Takes any number of refs.
* Refs can be mutable refs or function refs.
*
* @param refs
* @see https://react-hooks.org/docs/useMergeRefs
*/
export function useMergeRefs() {
var refs = [];
for (var _i = 0; _i < arguments.length; _i++) {
refs[_i] = arguments[_i];
}
return useMemo(function () {
if (refs.every(function (ref) { return ref === null; })) {
return null;
}
return function (refValue) {
for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) {
var ref = refs_1[_i];
setRef(ref, refValue);
}
};
}, [refs]);
}