createPortal
react-dom 提供了 createPortal 这个方法,作用如下:
默认按照 dom 层级渲染组件,createPortal 可以把一个组件渲染到特定的组件下。
实际使用:默认组件渲染到 root 节点,对话框渲染到 modal-protal 节点,插件渲染到 plugins 节点等。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import React from 'react';
import { createPortal } from 'react-dom';
class ModalPortal extends React.Component {
constructor(props) {
super(props);
this.el = document.createElement('div');
}
componentDidMount() {
document.getElementById('modal-wrapper').appendChild(this.el);
}
componentWillUnmount() {
document.getElementById('modal-wrapper').removeChild(this.el);
}
render() {
return createPortal(
this.props.children,
this.el,
);
}
}
export default ModalPortal;
|