ReactDOM. createPortal (child, con ta iner) Portal 将提供一种将子节点渲染到 DOM 节点中的方式,该节点存在于 DOM 组件的层次结构之外。 因此 Portals 适合脱离文档流 (out of flow) 的组件,特别是 position: absolute 与 po sition: fixed的组件。
例如:自定义弹窗等
import React, { useEffect } from "react";
import { createPortal } from "react-dom";
const CreatePortal = (props) => {
const el = document.createElement("div");
useEffect(() => {
el.setAttribute("id", "portal");
document.body.appendChild(el);
return () => {
document.body.removeChild(el);
};
}, []);
return createPortal(props.children, el);
};
export default CreatePortal;
浏览器输出:
portal 挂载在任意节点上
注意:使用StrictMode 会报错 portal 会执行两次 https://juejin.cn/post/7036380015365193735