# [[Headless Components|Headless Components]] ## πŸ“Œ Brief Summary Headless Components(ν—€λ“œλ¦¬μŠ€ μ»΄ν¬λ„ŒνŠΈ)λŠ” λ§ˆν¬μ—…μ΄λ‚˜ μŠ€νƒ€μΌλ§ 없이 μƒνƒœ 관리(State management)와 λ™μž‘ 둜직(Behavioral logic)λ§Œμ„ μ œκ³΅ν•˜λŠ” ν›…(Hooks) λ˜λŠ” μ»΄ν¬λ„ŒνŠΈ νŒ¨ν„΄μž…λ‹ˆλ‹€ [1, 2]. μ‹œκ°μ μΈ λ Œλ”λ§ μš”μ†ŒλŠ” μ „μ μœΌλ‘œ 이λ₯Ό μ‚¬μš©ν•˜λŠ” κ°œλ°œμžμ—κ²Œ μœ„μž„ν•˜μ—¬ 둜직과 λ§ˆν¬μ—…μ„ μ™„λ²½ν•˜κ²Œ λΆ„λ¦¬ν•©λ‹ˆλ‹€ [3]. κ³ λ„λ‘œ μ»€μŠ€ν…€λœ λΈŒλžœλ“œ UIλ₯Ό κ΅¬μΆ•ν•˜κ±°λ‚˜ μ ‘κ·Όμ„±(Accessibility)을 μžƒμ§€ μ•ŠμœΌλ©΄μ„œλ„ νŠΉμ • λ””μžμΈ μ‹œμŠ€ν…œμ— μ’…μ†λ˜μ§€ μ•ŠλŠ” μœ μ—°ν•œ μž¬μ‚¬μš© κ°€λŠ₯ μ»΄ν¬λ„ŒνŠΈλ₯Ό 섀계할 λ•Œ μ΄μƒμ μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€ [2-4]. ## πŸ“– Core Content * **둜직과 λ§ˆν¬μ—…μ˜ μ™„λ²½ν•œ 뢄리 (Separation of Logic and Markup):** Headless ComponentsλŠ” UI(μ‹œκ°μ  ν˜•νƒœ) 없이 λ‘œμ§λ§Œμ„ λ…ΈμΆœν•˜λ―€λ‘œ κ°œλ°œμžκ°€ μ™„μ „νžˆ 자유둭게 UIλ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. μ΄λŸ¬ν•œ 뢄리λ₯Ό 톡해 μ»΄ν¬λ„ŒνŠΈμ˜ ꡬ성 κ°€λŠ₯μ„±(Composability)을 κ·ΉλŒ€ν™”ν•  수 있으며, ν”„λ ˆμž„μ›Œν¬λ‚˜ νŠΉμ • λ””μžμΈ μ‹œμŠ€ν…œμ— ꡬ애받지 μ•Šκ³  μž‘λ™ν•©λ‹ˆλ‹€ [3]. λ˜ν•œ 'Headless Hook'의 ν˜•νƒœλ‘œ μΆ”μΆœλ  경우, UIκ°€ μ—†λŠ” μƒνƒœμ—μ„œλ„ 독립적인 ν…ŒμŠ€νŠΈκ°€ κ°€λŠ₯ν•΄μ Έ κ΄€μ‹¬μ‚¬μ˜ 뢄리(Separation of concerns)λ₯Ό κΉ”λ”ν•˜κ²Œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [5]. * **μ™„μ „ν•œ μŠ€νƒ€μΌλ§ μ œμ–΄ (Complete Style Control):** λ””μžμΈμ  의견(opinions)을 λ‚΄ν¬ν•˜μ—¬ λ°°ν¬λ˜λŠ” 일반적인 Styled Componentsμ™€λŠ” λ‹€λ₯΄κ²Œ, Headless ComponentsλŠ” μ‹œκ°μ  κ΅¬ν˜„μ„ μ „μ μœΌλ‘œ μ†ŒλΉ„μžμΈ κ°œλ°œμžμ—κ²Œ λ§‘κΉλ‹ˆλ‹€ [6]. 이 νŠΉμ„± 덕뢄에 자체적인 λΈŒλžœλ“œ κ°€μ΄λ“œλΌμΈμ„ μ—„κ²©ν•˜κ²Œ λ°˜μ˜ν•΄μ•Ό ν•˜λŠ” κ³ λ„μ˜ λΈŒλžœλ”© μ• ν”Œλ¦¬μΌ€μ΄μ…˜(highly branded apps)을 κ°œλ°œν•˜λŠ” 데 맀우 μ ν•©ν•©λ‹ˆλ‹€ [2]. * **λ³΅μž‘ν•œ μƒνƒœ 관리와 μ ‘κ·Όμ„± 보μž₯ (State Management & Accessibility):** λ“œλ‘­λ‹€μš΄, λ‹€μ΄μ–Όλ‘œκ·Έ, μ½€λ³΄λ°•μŠ€(예: Downshift의 `useCombobox()`) λ“± μƒν˜Έμž‘μš©μ΄ λ³΅μž‘ν•œ μ»΄ν¬λ„ŒνŠΈμ˜ 경우, Headless λΌμ΄λΈŒλŸ¬λ¦¬κ°€ λ‚΄λΆ€ μƒνƒœλΏλ§Œ μ•„λ‹ˆλΌ ν‚€λ³΄λ“œ 탐색, 슀크린 리더 지원과 같은 ν•„μˆ˜μ μΈ μ ‘κ·Όμ„±(Accessibility) κΈ°λŠ₯을 λͺ¨λ‘ μ œκ³΅ν•©λ‹ˆλ‹€ [3, 4]. λ”°λΌμ„œ κ°œλ°œμžλŠ” λΈŒλΌμš°μ €λ³„ ν˜Έν™˜μ„± μ΄μŠˆλ‚˜ λ³΅μž‘ν•œ μƒνƒœ κ΄€λ¦¬μ˜ λΆ€λ‹΄ 없이 μ‹œκ°μ  λ””μžμΈμ—λ§Œ 집쀑할 수 μžˆμŠ΅λ‹ˆλ‹€ [4]. * **Tailwind CSSμ™€μ˜ μ‹œλ„ˆμ§€ (Synergy with Tailwind CSS):** 2025λ…„ ν™•μž₯ κ°€λŠ₯ν•œ ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜μ˜ 핡심 νŠΈλ Œλ“œ 쀑 ν•˜λ‚˜λŠ” Radix UIλ‚˜ Headless UI 같은 Headless 라이브러리의 적극적인 μ±„νƒμž…λ‹ˆλ‹€ [4]. 특히 이 νŒ¨ν„΄μ€ Tailwind CSS와 κ²°ν•©ν•  λ•Œ κ·Έ μ§„κ°€λ₯Ό λ°œνœ˜ν•˜λŠ”λ°, λ³΅μž‘ν•œ 둜직과 접근성은 Headless μ»΄ν¬λ„ŒνŠΈκ°€ μ±…μž„μ§€κ³ , μ‹œκ°μ  μŠ€νƒ€μΌλ§μ€ Tailwind의 μœ ν‹Έλ¦¬ν‹° 클래슀둜 λΉ λ₯΄κ²Œ μ²˜λ¦¬ν•¨μœΌλ‘œμ¨ μ ‘κ·Όμ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ΄ λ›°μ–΄λ‚œ λΈŒλžœλ“œ μ „μš© UI 라이브러리λ₯Ό μ‰½κ²Œ ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€ [4]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Compound Components|Compound Components]], [[Tailwind CSS|Tailwind CSS]], [[Accessibility (A11y)|Accessibility (A11y)]], [[Design Systems|Design Systems]] - **Projects/Contexts:** [[Radix UI|Radix UI]], [[Headless UI|Headless UI]], [[Downshift|Downshift]], [[shadcn-ui|shadcn/ui]] - **Contradictions/Notes:** 일반적인 μŠ€νƒ€μΌλ§ 라이브러리(예: Styled Components)λŠ” μ»΄ν¬λ„ŒνŠΈμ— νŠΉμ •ν•œ λ””μžμΈμ  '의견(opinions)'이 κ²°ν•©λœ μ±„λ‘œ μ œκ³΅λ˜μ§€λ§Œ, Headless ComponentsλŠ” λ””μžμΈμ„ λ°°μ œν•˜κ³  였직 둜직과 μƒνƒœλ§Œμ„ μ œκ³΅ν•˜μ—¬ μ‹œκ°μ  μžμœ λ„λ₯Ό κ·ΉλŒ€ν™”ν•œλ‹€λŠ” μ μ—μ„œ λͺ…ν™•ν•œ λŒ€λΉ„λ₯Ό μ΄λ£Ήλ‹ˆλ‹€ [6]. --- *Last updated: 2026-04-26*