---
title: Reorder
description: "`Reorder`は、項目の順序をドラッグアンドドロップで変更できるコンポーネントです。"
links:
- style: https://github.com/yamada-ui/yamada-ui/tree/main/packages/react/src/components/reorder/reorder.style.ts
- source: https://github.com/yamada-ui/yamada-ui/tree/main/packages/react/src/components/reorder
- storybook: https://yamada-ui.github.io/yamada-ui?path=/story/components-reorder--basic
---
```tsx
虎杖悠仁
伏黒恵
釘崎野薔薇
五条悟
七海建人
```
## 使い方
```tsx
import { Reorder } from "@yamada-ui/react"
```
```tsx
import { Reorder } from "@/components/ui"
```
```tsx
import { Reorder } from "@workspaces/ui"
```
```tsx
虎杖悠仁
伏黒恵
釘崎野薔薇
```
### itemsを使う
```tsx
const items = useMemo(
() => [
{ value: "虎杖悠仁", label: "虎杖悠仁" },
{ value: "伏黒恵", label: "伏黒恵" },
{ value: "釘崎野薔薇", label: "釘崎野薔薇" },
{ value: "五条悟", label: "五条悟" },
{ value: "七海建人", label: "七海建人" },
],
[],
)
return
```
### バリアントを変更する
```tsx
const items = useMemo(
() => [
{ value: "虎杖悠仁", label: "虎杖悠仁" },
{ value: "伏黒恵", label: "伏黒恵" },
{ value: "釘崎野薔薇", label: "釘崎野薔薇" },
],
[],
)
return (
}>
)
```
### サイズを変更する
```tsx
const items = useMemo(
() => [
{ value: "虎杖悠仁", label: "虎杖悠仁" },
{ value: "伏黒恵", label: "伏黒恵" },
{ value: "釘崎野薔薇", label: "釘崎野薔薇" },
],
[],
)
return (
}>
)
```
### 方向を変更する
方向を変更する場合は、`orientation`に`vertical`または`"horizontal"`を設定します。デフォルトでは、`"vertical"`が設定されています。
```tsx
const items = useMemo(
() => [
{ value: "虎杖悠仁", label: "虎杖悠仁" },
{ value: "伏黒恵", label: "伏黒恵" },
{ value: "釘崎野薔薇", label: "釘崎野薔薇" },
{ value: "五条悟", label: "五条悟" },
],
[],
)
return (
}>
)
```
### ドラッグアンドドロップ可能な領域を限定する
ドラッグアンドドロップ可能な領域を限定する場合は、`ReorderTrigger`を使用します。
```tsx
虎杖悠仁
伏黒恵
釘崎野薔薇
```
### 完了のイベントをハンドルする
ユーザーのドラッグアンドドロップが終了し、項目の順序が完了されたイベントをハンドルする場合は、`onCompleteChange`を使用します。`onCompleteChange`は、完了した順序を配列で提供します。
```tsx
const items = useMemo(
() => [
{ value: "虎杖悠仁", label: "虎杖悠仁" },
{ value: "伏黒恵", label: "伏黒恵" },
{ value: "釘崎野薔薇", label: "釘崎野薔薇" },
{ value: "五条悟", label: "五条悟" },
],
[],
)
const [completedOrder, setCompletedOrder] = useState([
"虎杖悠仁",
"伏黒恵",
"釘崎野薔薇",
"五条悟",
])
return (
完了時の順序: {completedOrder.join(", ")}
setCompletedOrder(values)}
/>
)
```
### スクロール可能な領域で使う
スクロールがある領域で使う場合は、項目がオフセットを正しく測定できるように`layoutScroll`を`true`に設定します。
```tsx
const items = useMemo(
() => [
{ value: "虎杖悠仁", label: "虎杖悠仁" },
{ value: "伏黒恵", label: "伏黒恵" },
{ value: "釘崎野薔薇", label: "釘崎野薔薇" },
{ value: "五条悟", label: "五条悟" },
{ value: "七海建人", label: "七海建人" },
],
[],
)
return (
)
```
### 制御する
```tsx
const items = useMemo(
() => [
{ value: "虎杖悠仁", label: "虎杖悠仁" },
{ value: "伏黒恵", label: "伏黒恵" },
{ value: "釘崎野薔薇", label: "釘崎野薔薇" },
{ value: "五条悟", label: "五条悟" },
],
[],
)
const [values, setValues] = useState([
"虎杖悠仁",
"伏黒恵",
"釘崎野薔薇",
"五条悟",
])
return (
現在の順序: {values.join(", ")}
setValues(newValues)}
/>
)
```
## Props
### Reorder.Root
| Prop | Default | Type | Description |
| ------------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `as` | - | `keyof IntrinsicElements` | The HTML element to render. |
| `asChild` | - | `boolean` | Merges its props onto its immediate child. |
| `css` | - | `CSSObject \| CSSObject[]` | The CSS object. |
| `colorScheme` | - | `"amber" \| "black" \| "blackAlpha" \| "blue" \| "cyan" \| "danger" \| "emerald" \| "error" \| "flashy" \| "fuchsia" ...` | Set color scheme variables. |
| `size` | `"md"` | `"lg" \| "md" \| "sm" \| "xl"` | The size of the component. |
| `variant` | `"panel"` | `"elevated" \| "outline" \| "panel" \| "plain" \| "solid" \| "subtle" \| "surface" ...` | The variant of the component. |
| `items` | - | `ReorderItemProps[]` | If provided, generate reorder items based on items. |
| `onChange` | - | `(values: Y[]) => void` | The callback invoked when reorder items are moved. |
| `onCompleteChange` | - | `(values: Y[]) => void` | The callback invoked when the movement of reorder items is completed. |
| `orientation` | `"vertical"` | `"horizontal" \| "vertical"` | The orientation of the reorder. |
### Reorder.Item
| Prop | Default | Type | Description |
| ------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------ |
| `as` | - | `keyof IntrinsicElements` | The HTML element to render. |
| `asChild` | - | `boolean` | Merges its props onto its immediate child. |
| `css` | - | `CSSObject \| CSSObject[]` | The CSS object. |
| `colorScheme` | - | `"amber" \| "black" \| "blackAlpha" \| "blue" \| "cyan" \| "danger" \| "emerald" \| "error" \| "flashy" \| "fuchsia" ...` | Set color scheme variables. |
| `label` | - | `string \| number \| bigint \| boolean \| ReactElement> \| Iterable \| ReactPortal \| Promise<...>` | The label of the reorder item. |
| `value` | - | `NonNullable` | The value of the reorder item. |
### Reorder.Trigger
| Prop | Default | Type | Description |
| ------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| `as` | - | `As` | The HTML element to render. |
| `asChild` | - | `boolean` | Merges its props onto its immediate child. |
| `css` | - | `CSSObject \| CSSObject[]` | The CSS object. |
| `colorScheme` | - | `"amber" \| "black" \| "blackAlpha" \| "blue" \| "cyan" \| "danger" \| "emerald" \| "error" \| "flashy" \| "fuchsia" ...` | Set color scheme variables. |