headless 컴포넌트
| topics | 200-프론트개발 201 React |
| types | 이론 |
| tags | #react #headless-component #design-pattern |
Headless 컴포넌트
UI 없이 로직만 제공하는 컴포넌트 패턴이다.
What is Headless Component
UI 렌더링 없이 상태와 로직만 제공하는 컴포넌트다.
사용하는 측에서 자신만의 UI를 자유롭게 구성할 수 있다.
왜 필요할까
문제: 기존 UI 라이브러리
- 스타일이 고정되어 있다
- 커스터마이징이 어렵다
- 디자인 시스템과 충돌
해결: Headless 패턴
- 로직만 제공, UI는 사용자가 결정
- 완전한 스타일 자유도
- 접근성(a11y)은 내장
대표 라이브러리
- Headless UI (Tailwind Labs)
- Radix UI
- React Aria (Adobe)
- Downshift
예시
// Headless Dropdown 사용
<Menu>
<Menu.Button>옵션</Menu.Button>
<Menu.Items>
<Menu.Item>{({ active }) => (
<button className={active ? 'bg-blue-500' : ''}>
편집
</button>
)}</Menu.Item>
</Menu.Items>
</Menu>
왜 이렇게 할까: 로직(열림/닫힘, 키보드 네비게이션)은 라이브러리가 처리하고, UI는 내가 원하는 대로 만들 수 있다.