-
路由跳转
-
核心代码
import { useRouter,useRoute } from 'vue-router'; const $router = useRouter() const $route = useRoute() const toAbout = () => {console.log($router)$router.push('/about/888') }
-
全部代码
-
常量路由
export const constantRoute = [{path: '/about/:id',component:()=> import('../vue-base/about1.vue')},{path: '/',component:()=> import('../vue-base/home.vue')},{path: '/about',component:()=> import('../vue-base/about.vue')},{ path: '/:pathMatch(.*)*', name: 'NotFound', component: ()=>import('../vue-base/404.vue') },]
-
home.vue
<template><div><h1>我是home</h1><router-link to="/about/123">Go to about1</router-link><br><button @click="toAbout">点我前往About页面</button></div> </template><script setup lang="ts"> import { useRouter } from 'vue-router'; let $router = useRouter() const toAbout = () => {console.log($router)$router.push('/about') } </script><style scoped></style>
-
about.vue
<template><div><h1>about</h1><router-link to="/home">Go to Home</router-link><br><button @click="toAbout">点我前往About1页面</button></div> </template><script setup lang="ts"> import { useRouter,useRoute } from 'vue-router'; const $router = useRouter() const $route = useRoute() console.log($route) const toAbout = () => {console.log($router)$router.push('/about/888') } </script><style scoped></style>
-
about1.vue
<template><div>home1<br><button @click="toHome">点我也可以前往Home页面</button><h1>{{ params}}</h1></div> </template><script setup lang="ts"> import { useRouter,useRoute } from 'vue-router'; import { ref,computed } from 'vue'; let params = ref() const $router = useRouter() const $route = useRoute() console.log($route) params.value = computed(()=> Number($route.params.id) ) const toHome = () => {console.log($router)$router.push('/') } </script><style scoped></style>
-
效果
-
home
-
about
-
about1
-
404
-
-
-
-
带参数的动态路由匹配
- 核心代码
export const constantRoute = [{path: '/about/:id',component:()=> import('../vue-base/about1.vue')}, ]
-
匹配途径
- 核心代码
-
404路由
- 核心代码
export const constantRoute = [{ path: '/:pathMatch(.*)*', name: 'NotFound', component: ()=>import('../vue-base/404.vue') }, ]
- 核心代码
-
嵌套路由
- 核心代码
export const constantRoute = [{path: '/about/:id',component:()=> import('../vue-base/about1.vue'),redirect:'/about/:id/AboutChildren1',children:[{path:'AboutChildren1',component:()=>import('../vue-base/aboutChildren1.vue')},{path:'AboutChildren2',component:()=>import('../vue-base/aboutChildren2.vue')}]} ]
- about1.vue
<template><div>about1<br><button @click="toHome">点我也可以前往Home页面</button><h1>{{ params}}</h1><button @click="toAboutChildren">点我可以前往AboutChildren页面</button><router-view></router-view></div> </template><script setup lang="ts"> import { useRouter,useRoute } from 'vue-router'; import { ref,computed } from 'vue'; let params = ref() const $router = useRouter() const $route = useRoute() console.log($route) params.value = computed(()=> Number($route.params.id) ) const toHome = () => {console.log($router)$router.push('/') } const toAboutChildren = ()=>{$router.push('/about/8888/AboutChildren1') }</script><style scoped></style>
- aboutChildren1.vue
<template><div><h1>我是AboutChildren1</h1><br><router-link to="/"></router-link></div> </template><script setup lang="ts"></script><style scoped></style>
- aboutChildren2.vue
<template><div><h1>我是AboutChildren2</h1><br><router-link to="/"></router-link></div> </template><script setup lang="ts"></script><style scoped></style>
- 效果
- about
- aboutChildren1
- aboutChildren2
- about
- 核心代码