Contents
see List작성일 2022. 06. 11.
Vue 3 Composition API에서 라우터 사용하기
Vue 3의 Composition API(setup)에서는 this를 사용할 수 없어 라우터 접근 방식이 다릅니다. useRouter와 useRoute 컴포저블을 활용하는 방법을 알아봅니다.
1. 기본 설정
import { useRouter, useRoute } from "vue-router";
export default {
setup() {
const router = useRouter(); // 라우터 인스턴스
const route = useRoute(); // 현재 라우트 정보
return { router, route };
}
}
2. 프로그래밍 방식 네비게이션
import { useRouter } from "vue-router";
export default {
setup() {
const router = useRouter();
// 경로로 이동
const goToHome = () => {
router.push("/");
};
// 이름으로 이동
const goToUser = (id) => {
router.push({ name: "User", params: { id } });
};
// 쿼리 파라미터 포함
const search = (keyword) => {
router.push({
path: "/search",
query: { q: keyword }
});
};
// 히스토리 교체 (뒤로가기 불가)
const replaceRoute = () => {
router.replace("/new-page");
};
// 뒤로가기
const goBack = () => {
router.go(-1);
};
return { goToHome, goToUser, search, goBack };
}
}
3. 현재 라우트 정보 접근
import { useRoute } from "vue-router";
import { computed } from "vue";
export default {
setup() {
const route = useRoute();
// 현재 경로
console.log(route.path); // "/user/123"
// URL 파라미터
console.log(route.params.id); // "123"
// 쿼리 스트링
console.log(route.query.tab); // "profile"
// 라우트 이름
console.log(route.name); // "UserDetail"
// 반응형으로 감시
const userId = computed(() => route.params.id);
return { userId };
}
}
4. 네비게이션 가드
import { onBeforeRouteLeave, onBeforeRouteUpdate } from "vue-router";
export default {
setup() {
// 페이지 떠나기 전
onBeforeRouteLeave((to, from) => {
const answer = window.confirm("저장하지 않고 나가시겠습니까?");
if (!answer) return false;
});
// 같은 컴포넌트 내 라우트 변경 시
onBeforeRouteUpdate((to, from) => {
console.log("라우트 업데이트:", to.params.id);
});
}
}
5. script setup 문법
<script setup>
import { useRouter, useRoute } from "vue-router";
const router = useRouter();
const route = useRoute();
const navigate = () => {
router.push("/dashboard");
};
</script>
Options API vs Composition API 비교
| 기능 | Options API | Composition API |
|---|---|---|
| 라우터 | this.$router | useRouter() |
| 라우트 | this.$route | useRoute() |
| 이동 | this.$router.push() | router.push() |
주의사항
- useRouter/useRoute는 반드시 setup() 내부에서 호출
- route 객체는 반응형이므로 watch 가능
- params 변경 감지 시 computed나 watch 활용
javascript
| No | 작성일 | Title |
|---|---|---|
| 2921 | 2026. 05. 31. | 브라우저 중복 탭 작업 제어: BroadcastChannel과 Web Locks로 자동 저장 충돌 막기 |
| 2866 | 2026. 05. 23. | Node.js 운영 추적 로그 설계: AsyncLocalStorage로 요청 ID와 장애 원인 연결하기 |
| 2787 | 2026. 05. 15. | Node.js fetch 타임아웃·재시도 표준 패턴: AbortSignal로 장애 전파 막기 |
| 2589 | 2026. 04. 23. | ES2026 JavaScript 신기능 완전 가이드: using/await using, Array.fromAsync, Error.isError, Math.sumPrecise 실전 적용 |
| 2490 | 2026. 04. 14. | ES2025/ES2026 완벽 정리: Iterator Helpers, Temporal API, using 키워드 실전 가이드 |
| 2469 | 2026. 04. 13. | ES2026 완벽 가이드: Temporal API, using/await using, Array/Set 신기능 총정리 |
| 2449 | 2026. 04. 12. | ES2025/ES2026 JavaScript 신기능 완벽 정리: Temporal API부터 using 키워드까지 |
| 2425 | 2026. 04. 11. | Node.js 24 LTS 핵심 신기능 완벽 가이드 - V8 13.6, Permission Model, URLPattern |
| 2389 | 2026. 04. 09. | ES2025 핵심 신규 기능 총정리 - Set 연산, Iterator Helpers, Temporal API까지 |
| 2368 | 2026. 04. 08. | ES2025/ES2026 완벽 정리: Temporal API, Resource Management, 새 문법 총정리 |