Vue3 Composition API에서 Vue Router 사용
8429 단어 vue-routerVue.jsTypeScript
this.$router
와 같이 this
를 통해 라우터 객체에 액세스했습니다. 그러나, Composition API의 setup
메소드내에서는 this
에 액세스 할 수 없습니다. 그러므로 지금까지와는 다른 접근 방식으로 접근해야 합니다.useRouter() · useRoute()로 바꾸기
라우터 개체를 얻으려면 vue-rouer
에서 useRouter
또는 useRoute
함수를 가져옵니다. 각 함수는 다음과 같이 대응합니다.
Options API
Composition API
this.$router
useRouter
this.$route
useRoute
<script lang="ts">
import { defineComponent } from 'vue'
import { useRoute, useRouter } from 'vue-router'
export default defineComponent({
setup() {
const router = useRouter()
const route = useRoute()
const fetch = () => {
const { id } = route.params
store.getTodo(id)
}
const goHome = () => {
router.push('/')
}
return {
goHome,
}
},
})
</script>
useRoute()
함수에서 가져올 수 있습니다.
템플릿 내에서 지금까지와 같이 route
, $router
에 액세스할 수 있습니다. 그러므로 $route
또는 router
객체를 return 할 필요가 없습니다.
setup 메소드 밖에서는 액세스 할 수 없다
앞서 설명한 $route
함수는 범용적으로 사용할 수 있을 것 같기 때문에 Composition API의 유의가 되어 다른 파일로 분할해 보고 싶은 곳입니다. 이 함수를 goHome
에 넣고 거기에서 호출하도록 변경해 보겠습니다.
src/composable/router/index.tsimport router from '@/router'
import { useRouter } from 'vue-router'
const router = useRouter()
export const goHome = () => {
router.push('/')
}
somePage.vue<template>
<button @click="goHome">トップへ戻る</button>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
import { goHome } from '@/composables/router'
export default defineComponent({
setup() {
return {
goHome,
}
},
})
</script>
버튼을 눌러 봐도, 생각에 반해 반응해 주지 않습니다. 콘솔 에러를 보면, 아무래도 src/composable/router/index.ts
로부터 얻은 useRouter()
오브젝트가 router
로 되어 있는 것 같습니다.
컴포넌트 내 네비게이션 가드
네비게이션 가드도 마찬가지로 undefined
에서 함수를 가져와서 사용합니다.
Opsitions API에서 vue-router
에 해당하는 것은 제공되지 않는 것 같습니다.
Options API
Composition API
beforeRouteEnter
-
beforeRouteUpdate
onBeforeRouteLeave
beforeRouteLeave
onBeforeRouteLeave
<script lang="ts">
import { defineComponent } from 'vue'
import { onBeforeRouteLeave, onBeforeRouteUpdate, } from 'vue-router'
export default defineComponent({
setup() {
onBeforeRouteLeave((to, from) => {
//
})
onBeforeRouteUpdate((to, from) => {
//
})
},
})
</script>
Reference
이 문제에 관하여(Vue3 Composition API에서 Vue Router 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/azukiazusa/items/9f467fdea7298baf3476
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<script lang="ts">
import { defineComponent } from 'vue'
import { useRoute, useRouter } from 'vue-router'
export default defineComponent({
setup() {
const router = useRouter()
const route = useRoute()
const fetch = () => {
const { id } = route.params
store.getTodo(id)
}
const goHome = () => {
router.push('/')
}
return {
goHome,
}
},
})
</script>
import router from '@/router'
import { useRouter } from 'vue-router'
const router = useRouter()
export const goHome = () => {
router.push('/')
}
<template>
<button @click="goHome">トップへ戻る</button>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
import { goHome } from '@/composables/router'
export default defineComponent({
setup() {
return {
goHome,
}
},
})
</script>
네비게이션 가드도 마찬가지로
undefined
에서 함수를 가져와서 사용합니다.Opsitions API에서
vue-router
에 해당하는 것은 제공되지 않는 것 같습니다.Options API
Composition API
beforeRouteEnter
-
beforeRouteUpdate
onBeforeRouteLeave
beforeRouteLeave
onBeforeRouteLeave
<script lang="ts">
import { defineComponent } from 'vue'
import { onBeforeRouteLeave, onBeforeRouteUpdate, } from 'vue-router'
export default defineComponent({
setup() {
onBeforeRouteLeave((to, from) => {
//
})
onBeforeRouteUpdate((to, from) => {
//
})
},
})
</script>
Reference
이 문제에 관하여(Vue3 Composition API에서 Vue Router 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/azukiazusa/items/9f467fdea7298baf3476텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)