React Portals
import { useState } from 'react';
import { createPortal } from 'react-dom';
function Modal({ isOpen, onClose, children }) {
if (!isOpen) return null;
return createPortal(
<div className="modal-overlay" onClick={onClose}>
<div className="modal-content" onClick={(e) => e.stopPropagation()}>
{children}
</div>
</div>,
document.getElementById('modal-root')
);
}
function App() {
const [open, setOpen] = useState(false);
return (
<div className="app">
<button onClick={() => setOpen(true)}>Open Modal</button>
<Modal isOpen={open} onClose={() => setOpen(false)}>
<h2>Hello from a portal</h2>
<p>This markup lives outside #app in the DOM.</p>
</Modal>
<div id="modal-root"></div>
</div>
);
}
export default App;