⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

React Portals 传送门

学习如何使用 React Portal 将子节点渲染到父组件 DOM 层级之外的节点中。 · 难度:入门 · +15XP

Portals 概念

Portal 提供了一种将子节点渲染到存在于父组件 DOM 层级之外的 DOM 节点中的方式。语法:ReactDOM.createPortal(child, container)。常见用途:模态框、工具提示、悬浮菜单等,避免父容器的 overflow 或 z-index 影响。

1. 基本用法

首先在 HTML 中添加一个额外的根元素,例如 <div id='portal-root'></div>。然后在组件中使用 createPortal。

import ReactDOM from 'react-dom';

function Modal({ children }) { const portalRoot = document.getElementById('portal-root'); return ReactDOM.createPortal( <div className='modal-overlay'> {children} </div>, portalRoot ); }

2. 事件冒泡

尽管 Portal 将内容渲染到 DOM 树的不同位置,但事件冒泡仍然按照 React 组件树进行,而不是 DOM 树。这意味着 Portal 内部触发的事件会冒泡到包含 Portal 的父组件。

特性说明
DOM 位置渲染到指定的 container 内
React 上下文保持与父组件的 context 连接
事件冒泡按 React 树冒泡,而非 DOM 树

练习提示

在下方示例中,点击按钮会通过 Portal 将模态框渲染到 #portal-root 中。尝试修改模态框的样式,或添加关闭按钮。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 85 篇
0 完成
🔥 0