useAsync
useAsyncは、は非同期関数を実行し、その状態を追跡するカスタムフックです。
Loading...
const [flg, { toggle }] = useBoolean()
const { value, error, loading } = useAsync(
async () =>
new Promise<string>((resolve, reject) => {
console.log("deps:", JSON.stringify(flg))
setTimeout(() => {
if (Math.random() > 0.5) {
resolve("Succeeded.")
} else {
reject(new Error("A pseudo random error occurred."))
}
}, 3000)
}),
[flg],
)
return (
<VStack alignItems="flex-start">
{loading ? (
<Text>Loading...</Text>
) : error ? (
<Text>Error: {error.message}</Text>
) : (
<Text>Value: {value}</Text>
)}
<Button onClick={toggle}>Update state</Button>
</VStack>
)
こちらのコードを使用する場合は、
"use client"をファイルの上部に追加する必要があります。使い方
import { useAsync } from "@yamada-ui/react"
import { useAsync } from "@/components/ui"
import { useAsync } from "@workspaces/ui"
const { value, error, loading } = useAsync(async () => {}, [])