http://127.0.0.1:5500/vue/router.html?name=gl&age=18
//使用1:静态使用 <router-link to="/team?id=100">team</router-link> //使用2:动态绑定;path <router-link :to="{ path: '/team', query: { id: 100 } }">team</router-link> //使用3:动态绑定;name <router-link :to="{ name: 'team', query: { id: 100 } }">team</router-link> //使用4:动态绑定;模板字符串;id是定义的数据变量 <router-link :to="`/about?id=${id}`">team</router-link>
import { useRoute } from 'vue-router' let route = useRoute() console.log(route.query.id);
<div>{{ route.query.id }}</div>
<div>{{ $route.query.id }}</div>
在可能使用查询路由参数的组件中,做兼容性处理;如:如果有查询参数,则显示当前商品;如果没有,则显示所有商品或指定推荐
默认情况下,如果路由参数没有传递,则默认为空对象或空字符串
多个路由参数可以使用解构路由以简化语法,会丢失数据的响应式;不建议
为避免失去响应式,应该使用 toRefs
<script> 接收路由参数
import {toRefs} from 'vue' import {useRoute} from 'vue-router' let route = useRoute() let {query} = toRefs(route)
<template> 渲染路由参数 - 解构路由
<ul> <li>{{query.id}}</li> <li>{{query.title}}</li> <li>{{query.cont}}</li> </ul>
<template> 渲染路由参数 - 不解构路由
<ul> <li>{{route.query.id}}</li> <li>{{route.query.title}}</li> <li>{{route.query.cont}}</li> </ul>