SegmentedControl
SegmentedControlは、ユーザーが複数の選択肢の中から1つを選択するための使用されるコンポーネントです。
<SegmentedControl.Root defaultValue="ハチワレ">
<SegmentedControl.Item value="ハチワレ">ハチワレ</SegmentedControl.Item>
<SegmentedControl.Item value="うさぎ">うさぎ</SegmentedControl.Item>
<SegmentedControl.Item value="モモンガ">モモンガ</SegmentedControl.Item>
</SegmentedControl.Root>
使い方
import { SegmentedControl } from "@yamada-ui/react"
import { SegmentedControl } from "@/components/ui"
import { SegmentedControl } from "@workspaces/ui"
<SegmentedControl.Root>
<SegmentedControl.Item />
</SegmentedControl.Root>
itemsを使う
const items = useMemo<SegmentedControl.Item[]>(
() => [
{ label: "ハチワレ", value: "ハチワレ" },
{ label: "うさぎ", value: "うさぎ" },
{ label: "モモンガ", value: "モモンガ" },
],
[],
)
return <SegmentedControl.Root defaultValue="ハチワレ" items={items} />
サイズを変更する
const items = useMemo<SegmentedControl.Item[]>(
() => [
{ label: "ハチワレ", value: "ハチワレ" },
{ label: "うさぎ", value: "うさぎ" },
{ label: "モモンガ", value: "モモンガ" },
],
[],
)
return (
<VStack alignItems="flex-start">
<For each={["sm", "md", "lg", "xl"]}>
{(size) => (
<SegmentedControl.Root
key={size}
size={size}
defaultValue="ハチワレ"
items={items}
/>
)}
</For>
</VStack>
)
方向を変更する
const items = useMemo<SegmentedControl.Item[]>(
() => [
{ label: "ハチワレ", value: "ハチワレ" },
{ label: "うさぎ", value: "うさぎ" },
{ label: "モモンガ", value: "モモンガ" },
],
[],
)
return (
<VStack alignItems="flex-start">
<For each={["horizontal", "vertical"]}>
{(orientation) => (
<SegmentedControl.Root
key={orientation}
defaultValue="ハチワレ"
items={items}
orientation={orientation}
/>
)}
</For>
</VStack>
)
丸くする
const items = useMemo<SegmentedControl.Item[]>(
() => [
{ label: "ハチワレ", value: "ハチワレ" },
{ label: "うさぎ", value: "うさぎ" },
{ label: "モモンガ", value: "モモンガ" },
],
[],
)
return (
<SegmentedControl.Root defaultValue="ハチワレ" fullRounded items={items} />
)
無効にする
const items = useMemo<SegmentedControl.Item[]>(
() => [
{ label: "ハチワレ", value: "ハチワレ" },
{ label: "うさぎ", value: "うさぎ" },
{ label: "モモンガ", value: "モモンガ" },
],
[],
)
return (
<VStack alignItems="flex-start">
<SegmentedControl.Root defaultValue="ハチワレ" disabled items={items} />
<SegmentedControl.Root defaultValue="ハチワレ">
<SegmentedControl.Item value="ハチワレ">ハチワレ</SegmentedControl.Item>
<SegmentedControl.Item disabled value="うさぎ">
うさぎ
</SegmentedControl.Item>
<SegmentedControl.Item value="モモンガ">モモンガ</SegmentedControl.Item>
</SegmentedControl.Root>
</VStack>
)
読み取り専用にする
const items = useMemo<SegmentedControl.Item[]>(
() => [
{ label: "ハチワレ", value: "ハチワレ" },
{ label: "うさぎ", value: "うさぎ" },
{ label: "モモンガ", value: "モモンガ" },
],
[],
)
return (
<VStack alignItems="flex-start">
<SegmentedControl.Root defaultValue="ハチワレ" items={items} readOnly />
<SegmentedControl.Root defaultValue="ハチワレ">
<SegmentedControl.Item value="ハチワレ">ハチワレ</SegmentedControl.Item>
<SegmentedControl.Item readOnly value="うさぎ">
うさぎ
</SegmentedControl.Item>
<SegmentedControl.Item value="モモンガ">モモンガ</SegmentedControl.Item>
</SegmentedControl.Root>
</VStack>
)
制御する
const [value, setValue] = useState("ハチワレ")
const items = useMemo<SegmentedControl.Item[]>(
() => [
{ label: "ハチワレ", value: "ハチワレ" },
{ label: "うさぎ", value: "うさぎ" },
{ label: "モモンガ", value: "モモンガ" },
],
[],
)
return <SegmentedControl.Root items={items} value={value} onChange={setValue} />
"use client"をファイルの上部に追加する必要があります。Props
アクセシビリティ
現在、v2の移行に伴い、このセクションは更新中です。