--- title: useLoading description: "`useLoading`は、アプリケーションのローディングを制御するカスタムフックです。" links: - source: https://github.com/yamada-ui/yamada-ui/tree/main/packages/react/src/hooks/use-loading - storybook: https://yamada-ui.github.io/yamada-ui?path=/story/hooks-useloading--basic --- ```tsx const { screen, page, background } = useLoading() const onLoadingScreen = async () => { try { screen.start() await wait(3000) } finally { screen.finish() } } const onLoadingPage = async () => { try { page.start() await wait(3000) } finally { page.finish() } } const onLoadingBackground = async () => { try { background.start() await wait(3000) } finally { background.finish() } } return ( ) ``` ## 使い方 ```tsx import { useLoading } from "@yamada-ui/react" ``` ```tsx import { useLoading } from "@/components/ui" ``` ```tsx import { useLoading } from "@workspaces/ui" ``` ```tsx const { screen, page, background } = useLoading() ``` `useLoading`は、`screen`・`page`・`background`のインスタンスを返します。インスタンスには、いくつかのメソッドが含まれています。 - `start`: ローディングアニメーションを開始します。 - `update`: ローディングアニメーションを更新します。 - `finish`: ローディングアニメーションを終了します。 - `force`: ローディングアニメーションを強制的に更新します。 ### ローディングスキームを変更する ```tsx const { screen, page, background } = useLoading() return ( ) ``` ### 所要時間を設定する 所要時間を設定する場合は、`duration`に数値(ミリ秒)を設定します。 ```tsx const { screen, page, background } = useLoading() return ( ) ``` ### メッセージを設定する メッセージを設定する場合は、`message`に`ReactNode`を設定します。 ```tsx const { screen, page, background } = useLoading() return ( ) ``` ### メッセージを更新する メッセージを更新する場合は、`update`を使用します。 ```tsx const { screen, page, background } = useLoading() const onLoadingScreen = async () => { try { screen.start({ message: "Loading" }) await wait(3000) screen.update({ message: "Please Wait" }) await wait(3000) } finally { screen.finish() } } const onLoadingPage = async () => { try { page.start({ message: "Loading" }) await wait(3000) page.update({ message: "Please Wait" }) await wait(3000) } finally { page.finish() } } const onLoadingBackground = async () => { try { background.start({ message: "Loading" }) await wait(3000) background.update({ message: "Please Wait" }) await wait(3000) } finally { background.finish() } } return ( ) ``` ## コンフィグ ### ローディングスキームを変更する ```tsx const config = extendConfig({ loading: { background: { loadingScheme: "puff" }, page: { loadingScheme: "dots" }, screen: { loadingScheme: "grid" }, }, }) const App: FC = () => { const { screen, page, background } = useLoading() return ( ) } return ( ) ```