본문 바로가기

React

React에서 Headless UI 라이브러리 활용하기

React 프로젝트에서 UI 컴포넌트의 동작과 스타일을 분리하고 싶을 때 Headless UI 라이브러리는 매우 유용합니다. Headless UI는 Tailwind CSS 팀이 만든 완전한 접근성을 갖춘 UI 컴포넌트 라이브러리로, 스타일이 없고 오직 기능 구현에 집중한 컴포넌트를 제공합니다.

1. Headless UI란?

Headless UI는 UI 상태 관리와 접근성 로직이 내장된 컴포넌트를 제공하지만 스타일을 강제하지 않아 자유롭게 원하는 UI 디자인을 적용할 수 있습니다. 즉, UI의 동작 부분만 담당하고 스타일링은 개발자가 직접 할 수 있습니다.

2. 설치와 기본 사용법

Headless UI는 React와 Vue를 지원하며, React 프로젝트에서는 아래 명령어로 설치합니다.

npm install @headlessui/react

대표적인 컴포넌트로는 <Menu>, <Listbox>, <Disclosure> 등이 있습니다. 예를 들어, 드롭다운 메뉴를 만들 때 <Menu> 컴포넌트를 이렇게 활용할 수 있습니다.

import { Menu } from '@headlessui/react'

function Dropdown() {
  return (
    <Menu>
      <Menu.Button>메뉴 열기</Menu.Button>
      <Menu.Items>
        <Menu.Item>옵션 1</Menu.Item>
        <Menu.Item>옵션 2</Menu.Item>
      </Menu.Items>
    </Menu>
  )
}

3. 활용 팁 및 주의사항

Headless UI를 활용하면 UI 컴포넌트 로직과 상태 관리를 쉽게 구현할 수 있으나, 기본 스타일이 없으므로 TailwindCSS, CSS 모듈, Styled Components 등 원하는 스타일링 방법과 조합해서 사용해야 합니다.

또한 접근성을 내장하고 있어 키보드 네비게이션과 ARIA 태그가 자동 처리되므로 웹 접근성을 신경 쓰는 프로젝트에 적합합니다.

4. 결론

React 프로젝트에서 Headless UI를 도입하면 복잡한 UI 상태 관리와 접근성 문제를 손쉽게 해결하며, 자유로운 커스터마이징이 가능해 견고하고 유연한 UI를 만들 수 있습니다. 실무에서 스타일과 기능을 명확히 분리하고 싶을 때 적극 활용해보시길 추천합니다.