@material-ui/core
Version:
React components that implement Google's Material Design.
32 lines (25 loc) • 923 B
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useForkRef;
var React = _interopRequireWildcard(require("react"));
var _setRef = _interopRequireDefault(require("./setRef"));
function 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 React.useMemo(function () {
if (refA == null && refB == null) {
return null;
}
return function (refValue) {
(0, _setRef.default)(refA, refValue);
(0, _setRef.default)(refB, refValue);
};
}, [refA, refB]);
}
;