@sms-frontend/components
Version:
SMS Design React UI Library.
24 lines (23 loc) • 901 B
JavaScript
// only used by trigger. Plan to replace ../Portal
import { useRef, useEffect } from 'react';
import ReactDOM from 'react-dom';
import { isServerRendering } from '../_util/dom';
import useIsFirstRender from '../_util/hooks/useIsFirstRender';
var Portal = function (props) {
var getContainer = props.getContainer, children = props.children;
var containerRef = useRef();
var isFirstRender = useIsFirstRender();
if (isFirstRender && !isServerRendering) {
containerRef.current = getContainer();
}
useEffect(function () {
return function () {
var container = containerRef.current;
if (container && container.parentNode) {
container.parentNode.removeChild(container);
}
};
}, []);
return containerRef.current ? ReactDOM.createPortal(children, containerRef.current) : null;
};
export default Portal;