Switch
Switch
사용자가 체크/체크 해제 상태를 토글할 수 있게 해 주는 컨트롤이에요.
출처: 문서
본문
켜짐/꺼짐을 토글하는 스위치 컨트롤이에요. 키보드 내비게이션을 완전히 지원하고 제어/비제어 방식 모두 사용할 수 있어요. form 안에서 쓰면 폼 전송용 숨김 input도 함께 렌더링돼요.
Features
- 완전한 키보드 내비게이션.
- 제어(controlled)/비제어(uncontrolled) 방식 모두 지원.
Anatomy
모든 파트를 임포트해 조립해요.
import { Switch } from "radix-ui";
export default () => (
<Switch.Root>
<Switch.Thumb />
</Switch.Root>
);
API Reference
Root
스위치의 모든 파트를 담아요. form 안에서 사용하면 이벤트 전파가 올바르게 되도록 input도 렌더링돼요.
| Prop | Type | Default |
|---|---|---|
asChild |
boolean |
false |
defaultChecked |
boolean |
No default value |
checked |
boolean |
No default value |
onCheckedChange |
function |
No default value |
disabled |
boolean |
No default value |
required |
boolean |
No default value |
name |
string |
No default value |
value |
string |
on |
| Data attribute | Values |
|---|---|
[data-state] |
"checked" | "unchecked" |
[data-disabled] |
Present when disabled |
Thumb
스위치가 켜졌는지 꺼졌는지 시각적으로 나타내는 데 사용하는 썸이에요.
| Prop | Type | Default |
|---|---|---|
asChild |
boolean |
false |
| Data attribute | Values |
|---|---|
[data-state] |
"checked" | "unchecked" |
[data-disabled] |
Present when disabled |
Examples
숨겨진 input 분리하기
기본적으로 Switch.Root는 폼 제출을 위해 시각적으로 숨겨진 input을 렌더링해요. 그 input을 재구성하거나 이동하거나 제외하려면, 더 낮은 레벨의 파트들로 스위치를 조립할 수 있어요.
중요: 이 파트들은 불안정하며
unstable_접두사가 붙어 있어서 API가 향후 릴리스에서 바뀔 수 있어요.
Switch.unstable_Provider는 스위치 상태를 제공하고 폼 관련 props(name,value,checked,defaultChecked,required,disabled,onCheckedChange)를 받아요.Switch.unstable_Trigger는Switch.Thumb을 감싸는 상호작용 버튼이에요.Switch.unstable_BubbleInput은Switch.Root가 기본으로 렌더링하는 시각적으로 숨겨진 input이에요. 폼 제출이 필요 없으면 생략해요.
import { Switch } from "radix-ui";
export default () => (
<Switch.unstable_Provider name="airplane-mode">
<Switch.unstable_Trigger>
<Switch.Thumb />
</Switch.unstable_Trigger>
{/* The hidden input can be omitted if you don't need form submission */}
<Switch.unstable_BubbleInput />
</Switch.unstable_Provider>
);
Accessibility
switch role 요구사항을 준수해요.
키보드 상호작용
| Key | Description |
|---|---|
Space |
Toggles the component's state. |
Enter |
Toggles the component's state. |
더 알아보기 (Learn more)
- 폼에서 스위치 값을 전송하려면
name/valueprops를 지정하면 돼요(기본value는"on"). - 키보드로
Space/Enter로 상태를 토글할 수 있어요.