Defining Portals in React
- Portals provide a way to render children into a DOM node that exists outside of the DOM hierarchy of the parent component
- Normally, child components are mounted into the DOM of the nearest parent component
- The following illustrates this notion:
render() {
  // React mounts a new div
  // and renders the children into it
  return (
    <div>
      {this.props.children}
    </div>
  );
}- However, sometimes it’s useful to insert a child into a different location in the DOM
- When using portals, React doesn't create a new div
- Instead, it renders the children into domNode
- Here, domNodeis any valid DOM node
- The following illustrates this notion:
render() {
  return ReactDOM.createPortal(
    this.props.children,
    domNode
  );
}Use Case of Portals
- 
Typically, portals can be used when a parent component has: - overflow: hidden
- z-index
 
- We may need the child component to break out of its container
- For example, dialogs, hovercards, and tooltips
Illustrating Portals in React
<!-- index.html -->
<html>
  <body>
    <div id="root"></div>
    <div id="portal-root"></div>
  </body>
</html>// App.js
class App extends Component {
  render() {
    return(
      <div className="App">
        <PortalDemo />
      </div>
    )
  }
}// PortalDemo.js
function PortalDemon() {
  return ReactDOM.createPortal(
    <h1>Hello World</h1>,
    document.getElementById('portal-root')
  )
}<!-- Output -->
<html>
  <body>
    <div id="root">
      <div class="App"></div>
    </div>
    <div id="portal-root">
      <h1>Hello World</h1>
    </div>
  </body>
</html>References
Previous
Next