很多时候,我们需要将给定匹配模式的路由映射到同一个组件。例如,我们可能有一个 User 组件,它应该对所有用户进行渲染,但用户 ID 不同。
在 Vue Router 中,我们可以在路径中使用一个动态字段来实现,我们称之为路径参数。
query 形式传参非常方便,通过 ?键=值 的方式传参,路由数据只需要配置 path 即可。
重要的组成部分
1 路由设置,如 : const routes = [ { path : '/User', component : ()=> import("./pages/User.vue") }, ]
2 通过 route-link 组件 或者 js 传参 [ 编程式导航 ] 3 通过 $route 对象获取参数
route-link : <route-link to="/路由path?键=值&键=值..."> 或者 <router-link :to="{path:'/User', query:{键:值,键:值}}">
编程导航 : router.push({ path:"/User", query:{键:值, 键:"值"} }); 代码示例 :
<template>
<div>
<router-link to="/">首页</router-link>
<router-link to="/User?id=11&name=test">router-link 传参</router-link>
<span @click="gotoAbout">JS 跳转传参</span>
</div>
<div style="margin-top:15px;">
<router-view></router-view>
</div>
</template>
<script setup>
import { useRouter } from "vue-router";
const router = useRouter();
function gotoAbout(){
router.push({
path:"/User",
query:{id:101, name:"hi.."}
});
}
</script>
<style>
</style>
<template>
<div>id : {{uid}} name : {{uname}}</div>
</template>
<script setup>
import { onMounted, ref } from "vue";
import { useRoute } from "vue-router";
const uid = ref(0);
const uname = ref('lesscode');
const route = useRoute();
onMounted(()=>{
let queryData = route.query;
console.log(queryData);
uid.value = queryData.id;
uname.value = queryData.name;
});
</script>
<style>
</style>
在非 setup 环境可以直接使用 this.$router.push()实现跳转功能, 使用 this.$route 实现参数的接收。
# 跳转
this.$router.push({
path : '/User',
query : {id:11, name:"test"}
});
# 接收页面
let routeQuery = this.$route.query;