こんにちは、hiro08です。
Next.jsでreact-hooks-use-modalを使ったときのメモです。react-hooks-use-modalはmicroCMSのOrganizationで運営されています。興味がある方はご覧ください。
結論として、useModalのdomNodeを変更することで使うことができます。 useModalで返されるModal componenは内部でReact-Portalを使っています。なので、Next.jsのroot div (__next) をdomNodeに設定します。以下は実装例。
import { useModal } from "react-hooks-use-modal"; export const Modal: React.VFC = () => { const [Modal, open, close, isOpen] = useModal("__next", { preventScroll: true, closeOnOverlayClick: true, }); return ( <div> <p>Modal is Open? {isOpen ? "Yes" : "No"}</p> <button onClick={open}>OPEN</button> <Modal> <div> <h1>Title</h1> <p>This is a customizable modal.</p> <button onClick={close}>CLOSE</button> </div> </Modal> </div> ); };