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()