react-elegant-ui
Version:
Elegant UI components, made by BEM best practices for react
36 lines (35 loc) • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useRefHost = void 0;
var _react = require("react");
var _setRefValue = require("../lib/setRefValue");
/**
* Manager of ref value. It update ref value and set `null` by unmount
*
* It useful when you wish use consistent ref to something inside your component
*/
var useRefHost = function (ref, value) {
// Init local properties with unique symbols
var localRef = (0, _react.useRef)({});
var localValue = (0, _react.useRef)({});
// Update local objects
if (localRef.current !== ref || localValue.current !== value) {
localRef.current = ref;
localValue.current = value;
// Update ref
if (ref !== undefined) {
(0, _setRefValue.setRefValue)(ref, value);
}
}
// Set null by destroy
(0, _react.useEffect)(function () {
// Return only cleanup
return function () {
if (localRef.current === undefined) return;
(0, _setRefValue.setRefValue)(localRef.current, null);
};
}, []);
};
exports.useRefHost = useRefHost;