아, 왜 이 조합으로 시작했는지 모르겠다.
그냥 Vue3 로 할걸.
아무튼 Vue2 에서 Composition API 를 이용하여 신규 프로젝트 작업 중.
script setup 으로 코드를 작성 중인데 router 를 이용하는데 문제가 생겼다.
(사실 사방팔방에서 문제다. vuex 도 그렇고 각종 플러그인들도 그렇고)
라우터가 변경될 때마다 실행되는 코드를 넣어야 하는데
script setup 을 사용하다 보니 this.$route 를 가져오지 못한다.
<script setup lang="ts">
watch(
() => ???, // 뭘 넣어야 할까
() => {
// 작동
},
{
immediate: true,
}
);
</script>
이런 상황.
아무리 인터넷을 찾아봐도 모르겠다.
아무래도 Vue2 + Composition API (with script setup) 조합을 사용하는 괴랄한 사람이 별로 없어서겠지.
결국 코드를 하나씩 찍어보면서,
찾아냈다.
// rotuer/index.ts
const routes: Array<RouteConfig> = [
// 라우터
];
const router = new VueRouter({
linkActiveClass: "active",
linkExactActiveClass: "exact",
routes,
});
라우터 설정 파일을
<!-- App.vue -->
<script setup lang="ts">
import router from "@/router";
watch(
() => router.app.$route,
() => {
// 작동
},
{
immediate: true,
}
);
</script>
Vue 파일에서 가져온다.
그리고 router.app.$route 로 감시하면 정상적으로 작동한다.
저 $route 를 이용해 resolve 나 matched 같은 것도 참조할 수 있다.
이제 vuex 와 각종 플러그인들과의 싸움도 해야지.
'개발 > Front-End' 카테고리의 다른 글
background 에서도 동작하는 javascript 를 만들기 (0) | 2023.07.14 |
---|---|
네이버 공식 웹폰트 사용법 - 나눔, 마루 부리, 클로바 글꼴 (0) | 2022.08.18 |
[VS Code] Version Lens - package.json 버전 확인 (0) | 2022.08.09 |
TypeScript 에서 Object 타입 readonly 설정 (0) | 2022.07.25 |
SASS 에서 이미지 크기 가져오기 (0) | 2022.07.21 |