usePromiseDisclosure
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.
だ…大地よ海よ そして生きているすべての みんな…
このオラにほんのちょっとずつだけ元気をわけてくれ…!!!
const { open, onClose, onOpen, onSuccess } = usePromiseDisclosure()
const onClick = async () => {
try {
await onOpen()
console.log("やるじゃねえか、サタン!!!")
console.log("おめえはホントに世界の…")
console.log("救世主かもな!!!!")
} catch {
console.error("地球は滅亡しました")
}
}
return (
<VStack alignItems="flex-start">
<VStack gap="0">
<Text>だ…大地よ海よ そして生きているすべての みんな…</Text>
<Text>このオラにほんのちょっとずつだけ元気をわけてくれ…!!!</Text>
</VStack>
<Button onClick={onClick}>わけない</Button>
<Modal.Root
size="2xl"
body={
<VStack gap="0">
<Text>き、きさまらいいかげんにしろーーーっ!!!</Text>
<Text>さっさと協力しないかーーーっ!!!</Text>
<Text>
このミスター・サタンさまのたのみも、きけんというのかーーーっ!!!
</Text>
</VStack>
}
cancel="わけない"
open={open}
success="わける"
title="ミスター・サタン"
onCancel={onClose}
onClose={onClose}
onSuccess={onSuccess}
/>
</VStack>
)
If you use this code, you need to add
"use client"
to the top of the file.Usage
import { usePromiseDisclosure } from "@yamada-ui/react"
import { usePromiseDisclosure } from "@/components/ui"
import { usePromiseDisclosure } from "@workspaces/ui"
const { open, onClose, onOpen, onSuccess } = usePromiseDisclosure()