import React, { useState } from 'react';
import ReactDOM from 'react-dom';
const Modal = ({ isOpen, children, onClose }) => {
if (!isOpen) return null;
return ReactDOM.createPortal(
<div className="modal-overlay" onClick={onClose}>
<div className="modal-content" onClick={(e) => e.stopPropagation()}>
<button className="close-button" onClick={onClose}>
×
</button>
{children}
</div>
</div>,
document.body
);
};
export default Modal;
import Modal from './Modal';
import './modal.css';
function App() {
const [isModalOpen, setModalOpen] = useState(false);
const openModal = () => setModalOpen(true);
const closeModal = () => setModalOpen(false);
return (
<div>
<button onClick={openModal}>Open Modal</button>
<Modal isOpen={isModalOpen} onClose={closeModal}>
<h2>Modal Title</h2>
<p>This is the content of the modal.</p>
<button onClick={closeModal}>Close</button>
</Modal>
</div>
);
}
export default App;