Sometimes, we want to create a React modal that appends to the body element.
In this article, we’ll look at how to create a React modal that appends to the body element.
Create a React Modal that Appends to the body Element
To create a React modal that appends to the body element, we can use the react-portal package.
To install it, we run:
npm i react-portal
Then we write:
import { PortalWithState } from "react-portal";
export default function App() {
return (
<div>
<PortalWithState closeOnOutsideClick closeOnEsc>
{({ openPortal, closePortal, portal }) => (
<>
<button onClick={openPortal}>Open Portal</button>
{portal(
<p>
hello world <button onClick={closePortal}>Close me!</button>,
</p>
)}
</>
)}
</PortalWithState>
</div>
);
}
to add a modal with the PortalWithState component.
The closeOnOutsideClick prop lets us close the modal when we click outside it.
And the closeOnEsc prop lets us close the modal when we press the Esc key.
In the render prop function, we have the modal content in the argument of the portal function
The openPortal function lets us open the modal.
And the closePortal function closes the modal.
Conclusion
To create a React modal that appends to the body element, we can use the react-portal package.