root 根节点以外,渲染一个新的DOM元素
    第一个参数是, React child,react节点
    第二个参数是,DOM元素

    1. import ReactDOM from 'react-dom';
    2. function CreatePortal({children}) {
    3. const bodyRef = useRef(document.querySelector('body'));
    4. const el = document.createElement('div');
    5. useEffect(init, []);
    6. function init() {
    7. el.setAttribute('id', 'portal-root');
    8. bodyRef.current.appendChild(el);
    9. return () => {
    10. bodyRef.current.removeChild(el);
    11. }
    12. }
    13. return ReactDOM.createPortal(children, el);
    14. }
    15. export default CreatePortal

    父组件引用

    1. import CreatePortal from '@/CreatePortal';
    2. function App() {
    3. return (<CreatePortal>Pages</CreatePortal>)
    4. }

    image.png