上一节我们学习了 Vue query 模式的路由传参,本节讲解基于命名路由的 params 模式传参。params 方式可以有效地隐藏参数名称,并可以更严格地控制参数。
params 模式路由传参在浏览器中的 url 格式为 /路由/参数值/参数值,实现步骤
1. 定义路由
const routes = [
{
name : "ParamsDemo",
path : "/ParamsDemo/:id/:name",
component : ()=> import("./pages/ParamsDemo.vue")
}
]
2. 执行跳转
1. route-link : <router-link to="/路由/参数/参数" 或者 <router-link :to="{name:"路由名称", params:{键:值, 键:"值",...}}"
2. js api : router.push({ name : "路由名称", params:{键:值, 键:"值",...} });
3. 接收参数
在 onMounted 生命周期,使用 route 对象的 params 属性接收数据, 关键代码 :
import { useRoute } from "vue-router";
onMounted(()=>{
let paramsData = route.params;
console.log(paramsData);
});
在非 setup 环境可以直接使用 this.$router.push()实现跳转功能, 使用 this.$route.params 实现参数的接收。
// 1. 定义路由
const routes = [
{ path : '/' , name : "Home", component : ()=> import("./pages/Home.vue") },
{
path : '/About',
name : "About",
components : {
default : ()=> import("./pages/About.vue"),
routerView1 : ()=> import("./pages/User.vue")
},
},
{ path : '/User' , name : "User", component : ()=> import("./pages/User.vue") },
{
name : "ParamsDemo",
path : "/ParamsDemo/:id/:name",
component : ()=> import("./pages/ParamsDemo.vue")
}
]
<router-link
:to="{name:'ParamsDemo', params:{id:12,name:'lesscode'}}">params 传参</router-link>
<template>
<div>
params : {{ paramsData}}
</div>
</template>
<script setup>
import { onMounted, reactive } from "vue";
import { useRoute } from "vue-router";
const paramsData = reactive({id:0});
onMounted(()=>{
const route = useRoute();
console.log(route.params);
});
</script>
<style>
</style>