React Portal 使用指南
React Portal 是一个将子节点渲染到 DOM 中不同位置的技术,它允许你将组件渲染到 DOM 树中任何位置,而不仅仅是当前组件的子树中。
基本用法
- 创建一个 Portal 组件
- 使用
ReactDOM.createPortal
方法将组件渲染到指定的 DOM 节点
import React from 'react';
import ReactDOM from 'react-dom';
const App = () => {
return (
<div>
<h1>Hello, World!</h1>
<MyPortal />
</div>
);
};
const MyPortal = () => {
return ReactDOM.createPortal(
<h2>This is a Portal!</h2>,
document.getElementById('my-portal')
);
};
ReactDOM.render(<App />, document.getElementById('root'));
优势
- 避免重叠: Portal 可以避免组件之间的重叠,使得布局更加灵活。
- 提升性能: Portal 可以将组件渲染到不同的 DOM 树中,从而避免不必要的重渲染。
示例
以下是一个使用 Portal 的示例,将模态框渲染到页面底部:
import React from 'react';
import ReactDOM from 'react-dom';
const Modal = () => {
return (
<div className="modal">
<div className="modal-content">
<span className="close">×</span>
<p>This is a modal!</p>
</div>
</div>
);
};
const App = () => {
return (
<div>
<h1>Hello, World!</h1>
<MyPortal />
</div>
);
};
const MyPortal = () => {
return ReactDOM.createPortal(
<Modal />,
document.getElementById('modal-portal')
);
};
ReactDOM.render(<App />, document.getElementById('root'));
更多关于 React 的内容,请访问我们的React 教程。