🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

React 中的 portals 是什么?

2019-03-15

回答

Portals 提供了一种很好的将子节点渲染到父组件外部 DOM 层级中的 DOM 节点中的方式。

ReactDOM.createPortal(child, container) 

第一个参数(child)是任意可渲染的 React 子元素,例如一个元素,字符串或片断。第二个参数(container)是一个 DOM 元素。

加分回答

  • 通常从组件的 render 方法中返回的一个元素,该元素仅能装配到 DOM 节点中离其最近的父元素,但有时候也需要将其插入到 DOM 节点中的不同位置:
render() {
  // React 不会创建新的 div。他渲染子元素到 `domNode` 中。
  // `domNode` 可以是任意有效的 DOM 节点,无论他在 DOM 中的位置如何。
  return ReactDOM.createPortal(
    this.props.children,
    domNode,
  );
}
  • 对于 portal 的一个典型用例是当父组件有 overflow: hiddenz-index 样式时你需要其子组件能够在视觉上跳出其容器。例如,对话框、hovercards 以及提示框。

返回总目录

30 秒面试系列一


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

推荐阅读
留下你的脚步