vue3中路由传参query、params及动态路由传参详解
作者:凡小多 发布时间:2023-07-02 16:58:29
标签:路由传参,query,params
一、query传参
编程式导航 使用router.push
或者 router.replace
的时候,改为对象形式新增query
必须传入一个对象
import { useRouter } from 'vue-router';
...
const router = useRouter()
const toDetail = (item: Item) => {
router.push({
path: '/info',
query: item
})
}
接受参数
使用 useRoute
的 query
<template>
<div>
<div>ID:{{route.query?.id}}</div>
<div>名称:{{route.query?.name}}</div>
<div>价格:{{route.query?.price}}</div>
</div>
</template>
<script setup lang='ts'>
import { useRoute } from 'vue-router';
...
const route = useRoute()
</script>
<style lang='less' scoped>
</style>
二、params传参
编程式导航 使用router.push
或者 router.replace
的时候,改为对象形式并且只能使用name
,path无效,然后传入params
import { useRouter } from 'vue-router';
...
const router = useRouter()
const toDetail = (item: Item) => {
router.push({
name: 'Info',
params: item
})
}
接受参数
使用 useRoute
的 params
<template>
<div>
<div>ID:{{route.params?.id}}</div>
<div>名称:{{route.params?.name}}</div>
<div>价格:{{route.params?.price}}</div>
</div>
</template>
<script setup lang='ts'>
import { useRoute } from 'vue-router';
...
const route = useRoute()
</script>
<style lang='less' scoped>
</style>
三、动态传参
很多时候,我们需要将给定匹配模式的路由映射到同一个组件。
例如,我们可能有一个 User 组件,它应该对所有用户进行渲染,但用户 ID 不同。在 Vue Router 中,我们可以在路径中使用一个动态字段来实现,我们称之为 路径参数
// router.ts
import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
const routes: Array<RouteRecordRaw> = [{
path: '/',
name: 'table',
component: () => import('@/view/Table/index.vue')
}, {
path: '/info/:id',
name: 'Info',
component: () => import('@/view/Table/info.vue')
},
...
]
const router = createRouter({
history: createWebHistory(),
routes
})
export default router
import { useRouter } from 'vue-router';
...
const router = useRouter()
const toDetail = (item: Item) => {
router.push({
name: 'Info',
params: {id: item.id}
})
}
接受参数
使用 useRoute
的 params
<template>
<div>
<div>ID:{{ item?.id }}</div>
<div>名称:{{ item?.name }}</div>
<div>价格:{{ item?.price }}</div>
</div>
</template>
<script setup lang='ts'>
import { useRoute } from 'vue-router';
import { data } from './data.json'
...
const route = useRoute()
// 模拟根据id获取数据
const item = data.find(v => v.id === Number(route.params.id))
</script>
<style lang='less' scoped>
</style>
四、query传参和params传参的区别
query 传参配置的是 path,而 params 传参配置的是name,且在 params中配置 path 无效
query传递的参数会显示在地址栏中,而params传参不会
query传参刷新页面数据不会消失,而params传参刷新页面数据回消失
params可以使用动态传参,动态传参的数据会显示在地址栏中,且刷新页面不会消失,因此可以使用动态params传参,根据动态传递参数在传递页面获取数据,以防页面刷新数据消失
来源:https://blog.csdn.net/wgh4318/article/details/125824369


猜你喜欢
- 代码如下:'************************************ '截取文字长度函数,支持UT
- 本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。如何使用本教程最重要的是——请给我3
- 本文详细分析了Yii配置文件的用法。分享给大家供大家参考。具体分析如下:Yii配置文件比ThinkPHP复杂多了,先把自己了解的配置记录下来
- 1. 列表1.1 列表的定义List(列表) 是Python 中使用最频繁的数据类型,在其他语言中通常叫做数组专门用于存储一串 信息列表用[
- vue在做大型项目时,会用到多状态管理,vuex允许我们将store分割成多个模块,每个模块内都有自己的state、mutation、act
- 这是内部的一个邮件记录,分享出来听下业内同行的声音。事情是这样的..==先是 A 推荐了白鸦的推到内部群:“设计师们一定要养成一个习惯:无论
- 先来定义分页语句将要用到的几个参数:int currentPage ; //当前页int pageRecord ; //每页显示记录数以之前
- 如果你搞过ASP的开发,你就会为ASP中没有好的完整的调试环境而头疼不己。我收集了网上相关所有信息提示,想给它做成单机的ASP开发错误提示软
- 本文实例讲述了Python动态导入模块的方法。分享给大家供大家参考,具体如下:一、正常导入模块正常模块导入方式: import module
- 关于 Python requests ,在使用中,总结了一些小技巧把,记录下。1:保持请求之间的Cookies,我们可以这样做。
- 项目场景:最近在部署项目之后,运行出现报错:Expression #1 of SELECT list is not in GROUP BY
- 题目描述682. 棒球比赛你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛
- go get 和 go install 的区别先看结论:go get: 对 go mod 项目,添加,更新,删除&nbs
- 在安装依然主机管理系统时,因为当时导入MSSQL时有点问题,所以,为了赶快能用上管理功能,所以就暂时先用了Access数据库。不过一直以来都
- 这次,我们用Turtle模块结合三角函数,绘制出这样的勾股树:首先,导入模块from turtle import *from math im
- python,pycharm的环境变量设置官网下载安装python解释器时,如果忘记勾选添加到环境变量[add to path],可进行如下
- 解决方法:1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql
- python3.8新功能相关文章Python 3.8 新功能大揭秘【新手必学】 Python 3.8 新功能来一波(大部分人都不知
- 1.问题出现:在测试阶段,大数据并发的情况下,发现sql语句造成表的死锁,过一段时间,死锁消失。于是进行排查报错如下:对应的sql语句如下:
- 安装MySQL ODBC驱动官方说法:MySQL ODBC 驱动程序负责在开放式数据库连接 API (ODBC API) 的帮助下访问 My