Reorder
Reorder
は、項目の順序をドラッグアンドドロップで変更できるコンポーネントです。
インポート
import { Reorder, ReorderItem, ReorderTrigger } from "@yamada-ui/react"
Reorder
: 子要素(ReorderItem
)を制御するラッパーコンポーネントです。ReorderItem
: ドラッグアンドドロップ可能な項目のコンポーネントです。ReorderTrigger
: ドラッグアンドドロップ可能なアイコンを表示するコンポーネントです。
使い方
編集可能な例
<Reorder> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder>
または、items
を設定することでReorderItem
を省略することができます。
編集可能な例
const items = useMemo<ReorderGenerateItem[]>( () => [ { label: "ギニュー", value: "ギニュー" }, { label: "リクーム", value: "リクーム" }, { label: "バータ", value: "バータ" }, { label: "ジース", value: "ジース" }, { label: "グルド", value: "グルド" }, ], [], ) return <Reorder items={items} />
バリアントを変更する
編集可能な例
<VStack separator={<Separator />}> <Reorder variant="outline"> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder> <Reorder variant="elevated"> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder> <Reorder variant="unstyled"> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder> </VStack>
サイズを変更する
編集可能な例
<VStack separator={<Separator />}> <Reorder size="sm"> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder> <Reorder size="md"> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder> <Reorder size="normal"> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder> <Reorder size="lg"> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder> </VStack>
方向を変更する
方向を変更する場合は、orientation
にvertical
またはhorizontal
を設定します。デフォルトでは、vertical
が設定されています。
編集可能な例
<VStack separator={<Separator />}> <Reorder orientation="vertical"> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder> <Reorder orientation="horizontal"> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder> </VStack>
ドラッグアンドドロップ可能な領域を限定する
ドラッグアンドドロップ可能な領域を限定する場合は、ReorderTrigger
を使用します。
編集可能な例
<Reorder> <ReorderItem value="孫悟空"> <HStack> <ReorderTrigger /> <Text>孫悟空</Text> </HStack> </ReorderItem> <ReorderItem value="ベジータ"> <HStack> <ReorderTrigger> <GhostIcon /> </ReorderTrigger> <Text>ベジータ</Text> </HStack> </ReorderItem> </Reorder>
変更のイベントをハンドルする
項目の順序が変更されたイベントをハンドルしたい場合は、onChange
を使用します。onChange
は、現在の順序を配列を提供します。
編集可能な例
<Reorder onChange={(values) => console.log(`changed '${values.join(`', '`)}'`)}> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder>
完了のイベントをハンドルする
ユーザーのドラッグアンドドロップが終了し、項目の順序が完了されたイベントをハンドルしたい場合は、onCompleteChange
を使用します。onCompleteChange
は、完了した順序を配列を提供します。
編集可能な例
<Reorder onCompleteChange={(values) => console.log(`completed '${values.join(`', '`)}'`) } > <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder>
スクロール可能な領域で使用する
スクロールがある領域で使用する場合は、項目がオフセットを正しく測定できるようにlayoutScroll
をtrue
に設定します。
編集可能な例
<Reorder h="xs" overflowY="auto" layoutScroll> <ReorderItem value="ギニュー">ギニュー</ReorderItem> <ReorderItem value="リクーム">リクーム</ReorderItem> <ReorderItem value="バータ">バータ</ReorderItem> <ReorderItem value="ジース">ジース</ReorderItem> <ReorderItem value="グルド">グルド</ReorderItem> </Reorder>
GitHubでこのページを編集する