Tree
계층(Hierarchy) 구조의 데이터를 트리 형태로 출력하는 컴포넌트
개요
Foundation Tree는 계층형 데이터를 트리 구조로 시각화하는 컴포넌트입니다. 펼침/접힘, 들여쓰기, 노드 선택, 연결선, 아이콘 등 기본 트리 기능을 제공합니다.
주요 특징
- ✅ 계층 구조 표시: TreeItem 배열로 트리 데이터 바인딩
- ✅ 펼침/접힘: 하위 노드 존재 시 ChevronRight 아이콘으로 토글
- ✅ 들여쓰기: depth 단계별 indent 간격 조절
- ✅ 노드 선택: 단일/다중 선택 모드 지원
- ✅ 연결선: showLines로 계층 연결선 표시
- ✅ 아이콘: 폴더/파일 기본 아이콘 및 커스텀 아이콘
- ✅ 애니메이션: 펼침/접힘 시 부드러운 전환 효과
- ✅ 접근성: 키보드 탐색 지원
사용 예시
기본 트리 표시
Preview
src
components
App.tsx
index.tsx
package.json
tsconfig.json
노드 선택
Preview
src
App.tsx
index.tsx
package.json
tsconfig.json
다중 선택
Preview
src
App.tsx
index.tsx
package.json
tsconfig.json
Ctrl/Cmd + 클릭으로 여러 노드를 선택할 수 있습니다.
들여쓰기 조절
Preview
root
child-1
grandchild-1
child-2
API Reference
Props
| Prop | Type | Default | Description |
|---|---|---|---|
items | TreeItem[] | - | 트리 데이터 배열 |
defaultExpandedIds | string[] | [] | 초기 펼쳐진 노드 ID 목록 |
selectable | boolean | true | 노드 선택 가능 여부 |
multiSelect | boolean | false | 다중 선택 모드 |
selectedIds | string[] | - | 선택된 노드 ID (제어 모드) |
showLines | boolean | true | 연결선 표시 여부 |
showIcons | boolean | true | 아이콘 표시 여부 |
indent | number | 20 | depth별 들여쓰기 간격 (px) |
animateExpand | boolean | true | 펼침/접힘 애니메이션 사용 |
className | string | - | 추가 CSS 클래스 |
TreeItem
| Prop | Type | Description |
|---|---|---|
id | string | 노드 고유 ID |
label | string | 노드 표시 텍스트 |
icon | ReactNode | 커스텀 아이콘 |
children | TreeItem[] | 하위 노드 배열 |
Events
| Event | Type | Description |
|---|---|---|
onSelectionChange | (selectedIds: string[]) => void | 선택 변경 시 호출 |
기본 사용법
import { Tree, type TreeItem } from "@vortex/ui-foundation"
const items: TreeItem[] = [
{
id: "root",
label: "Root",
children: [
{ id: "child-1", label: "Child 1" },
{ id: "child-2", label: "Child 2" },
],
},
]
<Tree items={items} selectable />접근성
권장 사항
- ✅ 노드 클릭으로 선택/펼침 동작 수행
- ✅ 포커스 상태가 시각적으로 구분됨
- ❌ 깊은 중첩(5단계 이상)은 사용성 저하 주의
관련 컴포넌트
- Tree (iCignal): 체크박스, 검색, Drag & Drop 등 확장 기능 포함
Last updated on