什麼是 Portal?
Portal 是 React 將元件渲染到其他 DOM 位置的方法。它能讓元件邏輯仍在原本 React 樹中,但畫面可以顯示到頁面中的另一個地方。
Portal 概念
- createPortal:用來將內容渲染到指定 DOM 節點的 API。
- children:要被搬出去顯示的內容。
- container:實際放置內容的 DOM 節點。
Portal 語法
createPortal(children, container):把內容渲染到指定位置。children:Modal、提示框等畫面。document.body:常見的容器位置。return createPortal(...):回傳 Portal 畫面。
Portal 常見錯誤
Portal 只改變 DOM 放置位置,事件、props 與元件關係仍然依照 React 樹運作,而不是依照實際 DOM 位置運作,所以不要把它當成全新的獨立 App。import { createPortal } from "react-dom";
function Modal() {
return createPortal(
<div style={{ position: "fixed", inset: 20, background: "white" }}>
Modal
</div>,
document.body
);
}
export default function App() {
return (
<>
<p>主畫面</p>
<Modal />
</>
);
}
















