--- category: Unified tags: [auto-wikified, technical-documentation] title: Composition API description: "Vue 3의 Composition API는 작고 독립적인 단위로 애플리케이션의 복잡한 로직을 구성할 수 있게 해주는 API 모음이다." last_updated: 2026-05-02 --- # Composition API ## 📌 Brief Summary Vue 3의 Composition API는 작고 독립적인 단위로 애플리케이션의 복잡한 로직을 구성할 수 있게 해주는 API 모음이다. 기존 Options API가 데이터나 메서드 등 옵션 타입별로 코드를 분리했던 것과 달리, 기능적 논리 단위별로 관련된 코드를 그룹화할 수 있게 해준다. 이를 통해 상태 저장 로직(Stateful logic)을 캡슐화하고 재사용하는 '컴포저블(Composable)' 패턴을 구현하여, 대규모이거나 빠르게 성장하는 애플리케이션에서 높은 유지보수성과 확장성을 제공한다. ## 📖 Core Content * **로직의 캡슐화와 재사용 (Composables 패턴)** Composition API를 활용하면 상태 기반 로직을 '컴포저블'이라는 독립적이고 재사용 가능한 함수로 추출할 수 있다. 마우스 위치 추적, 비동기 데이터 패칭(`useFetch`), 윈도우 크기 조정 등 시간에 따라 변하는 상태를 관리하는 로직을 여러 컴포넌트 간에 충돌 없이 공유할 수 있다. 과거 Options API에서 사용하던 Mixins의 한계(네임스페이스 충돌, 암묵적 의존성)를 완벽히 해결한다. * **기능 중심의 코드 구조화** 기존 Options API에서는 특정 기능과 관련된 로직이 `data()`, `methods()`, `created()` 등으로 흩어져 있어 컴포넌트가 거대해질수록 파악하기 어려웠다. Composition API는 단일 기능과 관련된 모든 로직을 한 곳에 모을 수 있어 가독성을 높이고 디버깅 및 코드 추출을 용이하게 한다. * **TypeScript와의 강력한 통합** Composition API는 네이티브 수준의 TypeScript 지원을 제공한다. 기존 방식보다 보일러플레이트 코드가 적고, 변수나 함수에 대한 강력한 타입 추론과 제네릭 지원을 통해 훨씬 안정적인 개발자 경험(DX)을 선사한다. * **컴포저블 작성 베스트 프랙티스** * **명명 규칙**: 컴포저블 함수명은 `use`로 시작해야 한다 (예: `useMouse`). * **입력 매개변수 유연성**: 일반 값뿐만 아니라 `ref`나 `getter` 함수도 입력받을 수 있도록 설계하며, 내부에서 `toValue()`를 사용해 처리하는 것이 권장된다. * **반환 값 처리**: 반환 객체를 구조 분해 할당(Destructuring)할 때 반응성을 잃지 않도록, `reactive` 객체가 아닌 여러 개의 `ref`를 포함하는 일반(plain) 객체를 반환해야 한다. * **부수 효과(Side Effects) 관리**: `