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