--- title: usePromiseDisclosure description: "`usePromiseDisclosure` is a custom hook that helps handle common open/close or toggle scenarios with promises. It can be used to control components such as `Modal`, `Dialog`, `Drawer`, etc." links: - source: https://github.com/yamada-ui/yamada-ui/tree/main/packages/react/src/hooks/use-disclosure - storybook: https://yamada-ui.github.io/yamada-ui?path=/story/hooks-usepromisedisclosure--basic --- ```tsx const { open, onClose, onOpen, onSuccess } = usePromiseDisclosure() const onClick = async () => { try { await onOpen() console.log("やるじゃねえか、サタン!!!") console.log("おめえはホントに世界の…") console.log("救世主かもな!!!!") } catch { console.error("地球は滅亡しました") } } return ( だ…大地よ海よ そして生きているすべての みんな… このオラにほんのちょっとずつだけ元気をわけてくれ…!!! き、きさまらいいかげんにしろーーーっ!!! さっさと協力しないかーーーっ!!! このミスター・サタンさまのたのみも、きけんというのかーーーっ!!! } cancel="わけない" open={open} success="わける" title="ミスター・サタン" onCancel={onClose} onClose={onClose} onSuccess={onSuccess} /> ) ``` ## Usage ```tsx import { usePromiseDisclosure } from "@yamada-ui/react" ``` ```tsx import { usePromiseDisclosure } from "@/components/ui" ``` ```tsx import { usePromiseDisclosure } from "@workspaces/ui" ``` ```tsx const { open, onClose, onOpen, onSuccess } = usePromiseDisclosure() ```