--- title: usePromiseDisclosure description: "`usePromiseDisclosure`は、一般的な開閉や切り替えのシナリオを非同期処理するのに役立つカスタムフックです。`Modal`、`Dialog`、`Drawer`などのコンポーネントを制御するために使用できます。" 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} /> ) ``` ## 使い方 ```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() ```