UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

36 lines (35 loc) 1.06 kB
"use strict"; 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;