今天有看到同事寫的代碼,
ReactDOM.createPortal,哦豁這是什么API沒有使用過
然后百度了一下,原來這個API可以使自己寫的組件或者元素掛載到任意你你想掛載的dom元素上,
ReactDOM.createPortal的使用方法
react-dom 提供的具體方法是ReactDOM.createPortals(child,container) ,該方法需要兩個參數,第一個參數是需要掛載的組件實例,而第二個參數則是要掛載到DOM節點。
一般來說第一個參數可能需要傳遞的是需要掛載的this.props.children
我們可以利用這個API將自己寫的彈窗掛載到body上面。
class ModalContainer extends Component { constructor(props) { super(props); this.el = document.body; } componentDidMount() { modalRoot.appendChild(this.el); } componentWillUnmount() { modalRoot.removeChild(this.el); } render() { return ReactDOM.createPortal( this.props.children, this.el ); } }