@uiw/react-baidu-map-utils
Version:
Baidu Map utils Components for React.
48 lines (47 loc) • 1.27 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.usePortal = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactDom = require("react-dom");
const usePortal = () => {
const [container] = _react.default.useState(() => {
const el = document.createElement('div');
return el;
});
const [portal, setPortal] = (0, _react.useState)({
render: () => null,
remove: () => null
});
const ReactCreatePortal = _react.default.useCallback(elmm => {
const Portal = _ref => {
let {
children
} = _ref;
if (!children) return null;
return /*#__PURE__*/(0, _reactDom.createPortal)(children, elmm);
};
const remove = elm => {
elm && (0, _reactDom.unmountComponentAtNode)(elm);
};
return {
render: Portal,
remove
};
}, []);
(0, _react.useEffect)(() => {
if (container) portal.remove();
const newPortal = ReactCreatePortal(container);
setPortal(newPortal);
return () => {
newPortal.remove(container);
};
}, [container]);
return {
Portal: portal.render,
container
};
};
exports.usePortal = usePortal;
;