Skip to main content

谈谈 Portals

Portal 提供了一种将子节点渲染到存在于父组件以外的 DOM 节点的优秀的方案。

ReactDOM.createPortal(child, container)
  1. 第一个参数(child)是任何可渲染的 React 子元素,例如一个元素,字符串或 fragment。
  2. 第二个参数(container)是一个 DOM 元素。

使用场景

dialog 组件

一个 portal 的典型用例是当父组件有 overflow: hidden 或 z-index 样式时,但你需要子组件能够在视觉上“跳出”其容器。例如,对话框、悬浮卡以及提示框:

预览地址

通过 Portal 进行事件冒泡(待)