# Segmented Control
URL: /react/components/segmented-control
Source: https://github.com/daangn/seed-design/blob/dev/docs/content/react/components/segmented-control.mdx
여러 옵션 중 하나를 선택하여 관련 콘텐츠를 즉시 필터링하거나 전환할 때 사용하는 컴포넌트입니다.
사용 가능 버전: @seed-design/react@0.0.1, @seed-design/css@0.0.1
## Preview
```tsx
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";
export default function SegmentedControlPreview() {
return (
Hot
New
);
}
```
## Installation
- npm: npx @seed-design/cli@latest add ui:segmented-control
- pnpm: pnpm dlx @seed-design/cli@latest add ui:segmented-control
- yarn: yarn dlx @seed-design/cli@latest add ui:segmented-control
- bun: bun x @seed-design/cli@latest add ui:segmented-control
## Props
### `SegmentedControl`
`value`와 `defaultValue` 중 적어도 하나를 제공해야 합니다.
### `SegmentedControlItem`
## Examples
### Disabled
```tsx
import { VStack } from "@seed-design/react";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";
export default function SegmentedControlPreview() {
return (
Hot
New
Marinara
Alfredo
Pesto
Carbonara
Bolognese
);
}
```
### Notification
```tsx
import { ActionButton, VStack } from "@seed-design/react";
import { useState } from "react";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";
export default function SegmentedControlNotification() {
const [sortBy, setSortBy] = useState("monthly");
const [hasSeenAnnual, setHasSeenAnnual] = useState(false);
return (
{
setSortBy(value);
if (value === "annual") setHasSeenAnnual(true);
}}
>
Monthly
Annual
Enterprise Custom
setHasSeenAnnual(false)}
>
Reset Notification
);
}
```
### Long Label
```tsx
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";
export default function SegmentedControlLongLabel() {
return (
가격 높은 순
할인율 높은 순
인기 많은 순
);
}
```
### Fixed Width
`SegmentedControl`의 `style` prop에 `width`를 제공해서 직접 너비를 설정할 수 있습니다.
```tsx
import { VStack } from "@seed-design/react";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";
export default function SegmentedControlFixedWidth() {
return (
New
Hot
One Way Trip
Round Trip
Multi-City Journey
);
}
```
### Listening to Value Changes
`SegmentedControl`의 `onValueChange` prop을 사용하여 선택 값 변경을 감지할 수 있습니다.
이벤트를 활용해야 하는 경우 `SegmentedControlItem`의 `inputProps`를 통해 내부 `` 요소에 직접 이벤트 핸들러를 추가할 수 있습니다.
```tsx
import { VStack, Text } from "@seed-design/react";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";
import { useState } from "react";
export default function SegmentedControlValueChanges() {
const [count, setCount] = useState(0);
const [lastValue, setLastValue] = useState(null);
return (
{
setCount((prev) => prev + 1);
setLastValue(value);
}}
>
Hot
New
onValueChange called: {count} times, last value: {lastValue ?? "-"}
);
}
```