React createPortal 创建穿梭组件
const PortalComponent = ({ children, onClose }) => { return createPortal( <div className="modal" style={modalStyle} onClick={onClose}> {children} </div>, // get outer DOM element document.getElementById("portal") ); }; class App extends React.Component { constructor(props) { super(props); this.state = { modalOpen: false }; } render() { return ( <div style={styles}> <Hello name="CodeSandbox" /> <h2>Start editing to see some magic happen {"\u2728"}</h2> <button onClick={() => this.setState({ modalOpen: true })}> Open modal </button> {this.state.modalOpen && ( <PortalComponent onClose={() => this.setState({ modalOpen: false })}> <h1>This is modal content</h1> </PortalComponent> )} </div> ); } } render(<App />, document.getElementById("root"));