Portal 提供了一種將子元件渲染到存在於父元件以外的 DOM 中的方法。
JSXimport { useState, useEffect } from 'react'; import { createPortal } from 'react-dom'; export default function InPortal({ children }) { const [hostElement, setHostElement] = useState(null); useEffect(() => { const elm = document.createElement('div'); setHostElement(elm); document.body.appendChild(elm); return () => { document.body.removeChild(elm); }; }, []); if (!hostElement) { return null; } return createPortal(children, hostElement); }
Last Updated:JSXexport default function App() { return ( <InPortal> <div>// some element //</div> </InPortal> ); }