概述
路由传参有query和params两种方式。
query以?形式传参,如 / user ? id=1 & name=tom & gender=male
params通过:形式绑定参数传参,如 / user / :id / :name / :gender --> / user / 1 / tom / male
总结:路由传参用query或param都可以。一般采用params方式进行路由传参,其url比较美观。
1.定义路由
<!--routers/router.ts-->
{
path: '/test', //测试路由
name: 'test',
component: () => import('~/views/test/index.vue'),
meta: {
title: '测试路由'
}
},
{
path: '/user', //query定义路由
name: 'user',
component: () => import('~/views/user/index.vue'),
meta: {
title: 'user页面'
}
},
// {
// path: '/user/:id/:name/:age/:gender', //params定义路由(特殊,注意!!)
// name: 'user',
// component: () => import('~/views/pgc/user/index.vue'),
// meta: {
// title: 'user页面'
// }
// }
2.路由跳转
<!--views/test/index.vue-->
<template>
<div>Test页面</div>
<router-link to="/user?id=12&name=tom&age=13&gender=male">
query传参
</router-link>
<router-link to="/user/12/tom/13/male">
params传参
</router-link>
</template>
3.接收参数
<!--views/user/index.vue-->
<template>
<div>user页面接收参数</div>
<div>
<!-- 获得到query传参的参数 { "id": "12", "name": "tom", "age": "13", "gender": "male" } -->
{{ query }}
</div>
<div>
<!-- 获得到params传参的参数 { "id": "12", "name": "tom", "age": "13", "gender": "male" } -->
{{ params }}
</div>
</template>
<script lang="ts" setup>
import { useRoute } from 'vue-router'; //1.先在需要跳转的页面引入useRouter
const { query, params } = useRoute(); //2.在跳转页面定义router变量,解构得到指定的query和params传参的参数
</script>