Checkbox
Checkbox 컴포넌트는 사용자가 하나 이상의 항목을 선택할 때 사용해요. 체크된 상태와 체크되지 않은 상태를 나타내고, 여러 개의 항목을 동시에 선택할 수 있어요.
사용 예제
형태
Checkbox는 두 가지 방법으로 표현할 수 있어요.
<Checkbox.Circle />: 체크 아이콘이 원으로 감싸진 형태로 표현돼요.<Checkbox.Line />: 체크 아이콘이 단독으로 표현돼요.
상태
상태를 외부에서 관리하는 방식
Checkbox의 상태를 외부에서 관리하려면 checked와 onCheckedChange 속성을 함께 사용하세요. 이렇게 하면 체크박스가 선택되었는지 아닌지를 외부에서 직접 관리할 수 있어요.
상태를 내부에서 관리하는 방식
Checkbox의 상태를 내부에서 자동으로 관리하려면 defaultChecked 속성을 사용하세요. 이 속성은 체크박스가 처음 화면에 표시될 때 선택 상태를 정해주고, 그 후에는 컴포넌트가 스스로 상태를 관리해요. 이 방식은 상태 변화를 추적하지 않아도 될 때 유용해요.
크기 조정하기
Checkbox의 크기를 변경하려면 size 속성을 사용하세요.
비활성화하기
Checkbox를 비활성화하려면 disabled 속성을 사용하세요. 비활성화된 Checkbox를 클릭하면 선택 상태가 바뀌지 않고, 좌우로 흔들리는 애니메이션이 나타나요.
라디오 버튼으로 활용하기
Checkbox를 라디오 버튼으로 활용하려면 inputType 속성에 'radio'를 넣어주세요. 여러 개의 항목 중 하나만을 선택해야할 때 유용해요.
접근성
Checkbox 컴포넌트는 기본적으로 접근성을 지원하는 여러 속성을 포함하고 있어요. 이 속성들은 스크린 리더 사용자들이 컴포넌트를 명확하게 이해하고 상호작용할 수 있도록 도와줘요.
기본 접근성 지원
다음 속성이 있어서 다른 설정 없이도 기본적으로 사용자의 접근성을 고려한 Checkbox 컴포넌트를 제공할 수 있어요.
| 속성 | 접근성 효과 | 설명 |
|---|---|---|
role="checkbox" 및 tabindex="0" | 스크린 리더에서 "체크박스"로 인식해요. | 요소의 역할을 명확히 전달해요. |
aria-checked | 현재 체크 상태를 스크린 리더에서 알려줘요. | 체크박스의 상태에 따라 aria-checked 속성이 자동으로 업데이트 돼요. |
aria-disabled="true" | 체크박스가 비활성화된 상태임을 스크린 리더에서 알려줘요. | 비활성화된 체크박스에 자동으로 추가되어 사용자가 상호작용할 수 없다는 정보를 전달해요. |
<div role="checkbox" tabindex="0" aria-checked="false"></div>Checkbox 컴포넌트는 <input type="checkbox" /> 요소를 포함하고 있지만, 이 요소는 화면에 보이지 않아요.
대신 시각적으로 보이는 커스텀 체크박스 요소에 role="checkbox"와 aria-checked 속성이 적용되어 있어, 스크린 리더 사용자에게 올바른 정보를 전달할 수 있어요.
개발자가 추가로 지원해야 하는 접근성
필수로 제공해야 하는 aria-label
Checkbox 컴포넌트에서는 aria-label 속성을 필수적으로 제공해서 체크박스의 목적을 명확히 설명해야 합니다. 커스텀 체크박스와 레이블이 별도의 요소로 구현되어 있기 때문이에요. 이 속성을 사용해서 스크린 리더 사용자는 체크박스의 의미를 정확히 이해할 수 있어요.
<Checkbox.Circle
checked={checked}
onCheckedChange={setChecked}
aria-label="이용약관 동의" // 개발자가 필수로 제공해야 합니다
/>주의할 점은 aria-label을 작성할 때 "체크박스"라는 요소 유형은 적지 않도록 해야 해요. 스크린 리더가 이미 "체크박스"라고 읽어주기 때문에 중복된 정보를 제공하지 않도록 주의해야 합니다.
이러한 접근성 고려사항을 적용하면, 더욱 포괄적이고 사용하기 쉬운 체크박스 컴포넌트를 만들 수 있어요. 개발자가 aria-label을 필수로 제공함으로써, 모든 사용자가 체크박스의 목적을 명확히 이해할 수 있게 되어 웹 접근성이 크게 향상됩니다.
인터페이스
CheckboxProps
| 속성 | 기본값 | 타입 |
|---|---|---|
| inputType | 'checkbox' | "checkbox"|"radio"input 태그의 `type` 속성을 결정해요. |
| size | 24 | number`Checkbox` 컴포넌트의 크기를 결정해요. |
| checked | - | false|true이 값이 `true`일 때 해당 `Checkbox`가 선택된 상태로 표현돼요. 주로 `Checkbox` 컴포넌트의 상태를 컴포넌트 외부에서 관리할 때, `onCheckedChange` 속성과 함께 사용해요. |
| onCheckedChange | - | (checked: boolean) => void`Checkbox` 컴포넌트의 선택 상태가 바뀔 때 실행되는 함수예요. |
| defaultChecked | - | false|true`Checkbox` 컴포넌트의 상태를 컴포넌트 내부에서 관리할 때, 초기 선택 상태를 지정해요. |
| disabled | - | false|true이 값이 `true`일 때 `Checkbox` 컴포넌트가 비활성화돼요. |