Portal
Portal 元件讓您將其子元素渲染到 Portal 本身 DOM 階層之外的 DOM 節點中。
簡介
Portal 是一個基於 React 的 createPortal()
API 建構的實用元件。它以方便的元件形式提供 createPortal()
的功能。Modal 和 Popper 元件在內部使用它。
通常,元件的子元素會在該元件的 DOM 樹狀結構中渲染。但有時需要在 DOM 中的不同位置掛載子元素。Portal 元件接受 container
屬性,該屬性會將 ref
傳遞到將掛載其子元素的 DOM 節點。
以下示範展示了如何將 <span>
內巢狀的 Portal 附加到 Portal DOM 階層之外的節點——點擊「掛載子元素」以查看其行為
我看起來會在這裡渲染。
按下 Enter 鍵開始編輯
基本用法
匯入
import Portal from '@mui/material/Portal';
客製化
伺服器端 Portal
DOM API 在伺服器上不可用,因此您需要使用 container
屬性回呼。此回呼會在 React 版面配置效果期間呼叫
<Portal container={() => document.getElementById('filter-panel')!}>
<Child />
</Portal>