跳到主要内容
+

Portal

Portal 组件允许你将其子组件渲染到 Portal 自身 DOM 层次结构之外的 DOM 节点中。

简介

Portal 是一个围绕 React 的 createPortal() API 构建的实用组件。它以便捷的组件形式为你提供 createPortal() 的功能。

Portal 组件在内部被 ModalPopper 组件使用。

组件

import { Portal } from '@mui/base/Portal';

通常,组件的子组件会在该组件的 DOM 树中渲染。但有时需要在 DOM 中的不同位置挂载子组件。

Portal 组件接受一个 container prop,该 prop 将 ref 传递给将要挂载其子组件的 DOM 节点。

以下演示展示了嵌套在 Portal 中的 <span> 如何附加到 Portal DOM 层次结构之外的节点——点击挂载子组件以查看其行为

我看起来会在这里渲染。
Enter 键开始编辑

服务端

DOM API 在服务端不可用,因此你需要使用 container prop 回调。此回调在 React 布局 effect 期间被调用。

<Portal container={() => document.getElementById('filter-panel')!}>
  <Child />
</Portal>