콤보박스.gif

본 컴포넌트는 Next.js 환경에서 서버/클라이언트 경계를 명확히 유지하면서 접근성·키보드 조작·검색 기능을 포함한 Combobox를 제공하기 위해 설계하였다.

Combobox는 UI 렌더링 / 상태 로직 / 유틸 로직을 분리하여 구성되며, 서버 컴포넌트에서는 안전하게 사용할 수 있는 래퍼만 노출하고 실제 인터랙션은 클라이언트 컴포넌트와 훅에서 처리한다.


✅ 컴포넌트 구조

파일 구성

파일명 유형 주요 역할
combobox.tsx Server ClientCombobox를 래핑하는 서버 컴포넌트
client-combobox.tsx Client 실제 DOM 렌더링 및 사용자 인터랙션 처리
use-combobox.ts Client Hook 상태 / 포커스 / 키보드 / 열기·닫기 로직 관리
combobox.utils.ts Utils 포커스 이동 규칙, 초기 포커스 계산

✅ 역할 분리 설계

Combobox (Server)


ClientCombobox (Client)