rooks
Version:
Essential React custom hooks ⚓ to super charge your components!
40 lines (39 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useMergeRefs = void 0;
var react_1 = require("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
*/
function useMergeRefs() {
var refs = [];
for (var _i = 0; _i < arguments.length; _i++) {
refs[_i] = arguments[_i];
}
return (0, react_1.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]);
}
exports.useMergeRefs = useMergeRefs;