Skip to content

🎉 Material UI v5 is out now! Check out the announcement blog post

Portal

The portal component renders its children into a new "subtree" outside of current DOM hierarchy.

The children of the portal component will be appended to the container specified. The component is used internally by the Modal and Popper components.

Example

It looks like I will render here.
<button type="button" onClick={handleClick}>
  {show ? 'Unmount children' : 'Mount children'}
</button>
<div className={classes.alert}>
  It looks like I will render here.
  {show ? (
    <Portal container={container.current}>
      <span>But I actually render here!</span>
    </Portal>
  ) : null}
</div>
<div className={classes.alert} ref={container} />

Server-side

React doesn't support the createPortal() API on the server. You have to wait for the client-side hydration to see the children.