Vue3路由跳转并传递参数
创作时间:
作者:
@小白创作中心
Vue3路由跳转并传递参数
引用
CSDN
1.
https://blog.csdn.net/m0_62128476/article/details/139484192
前言
路由跳转并传递参数的应用十分广泛,以下是一些常见的应用场景:
- 商品详情页 :当用户在商品列表页点击一个商品时,通常会跳转到该商品的详情页。可以将商品的ID作为参数传递给商品详情页,商品详情页组件就能够根据商品ID获取到商品的详细信息
- 视频详情页 :当用户在视频列表页点击一个视频时,通常会跳转到该视频的详情页。可以将视频的ID作为参数传递给视频详情页,视频详情页组件就能够根据视频ID获取到视频的详细信息
- 用户个人资料页 :在用户点击查看或编辑个人资料时,路由会跳转到个人资料页,并向个人资料页面传递用户的ID或者其它唯一标识符,个人资料页组件可以根据这个参数来获取用户的个人信息
- 文章阅读页 :当用户点击一个文章标题或摘要时,应用会将用户带到文章阅读页。在这个过程中,文章的ID或其他唯一标识符会作为参数传递,文章阅读页组件就可以根据这个参数获取相应的文章内容
- 搜索结果页 :用户在搜索框输入关键词后,通常会跳转到搜索结果页。可以将搜索关键词作为参数传递给搜索结果页,页面组件会根据这个参数来请求和展示相关的搜索结果
本文主要介绍在Vue3工程(使用 setup 语法)中如何进行路由跳转并传递参数
准备工作
2.1 编写路由规则
在src/router/index.js文件中编写路由规则
import {createRouter, createWebHistory} from 'vue-router'
import HomeView from '@/views/HomeView.vue'
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: '/',
name: 'homeView',
component: HomeView
},
{
path: '/sourceView',
name: 'sourceView',
component: () => import('@/views/SourceView.vue')
},
{
path: '/targetView',
name: 'targetView',
component: () => import('@/views/TargetView.vue')
}
]
})
export default router
2.2 源页面
src/views/SourceView.vue
<template>
<div>
<h1>源页面</h1>
</div>
</template>
<script setup>
</script>
<style scoped>
</style>
2.3 目标页面
src/views/TargetView.vue
<template>
<div>
<h1>目标页面</h1>
</div>
</template>
<script setup>
</script>
<style scoped>
</style>
源页面如何传递参数给目标页面
3.1 通过 router-link 标签传递参数(很少使用)
在路径后面添加需要传递的参数,如果需要传递多个参数,多个参数之间用&符号隔开
template部分(to属性前面记得加上:)
<router-link :to="`/targetView?username=${username}&gender=${gender}`">跳转到目标页面</router-link>
script部分
const username = ref('zhangsan')
const gender = ref(1)
3.2 通过 js 代码传递参数(经常使用)
template部分
<button @click="jumpToTargetView">跳转到目标页面</button>
script部分
import router from '@/router/index.js'
import {ref} from 'vue'
const username = ref('zhangsan')
const gender = ref(1)
const jumpToTargetView = () => {
router.push({
path: '/targetView',
query: {
username: username.value,
gender: gender.value
}
})
}
目标页面接收源页面传递过来的参数
template部分
用户名:{{ username }}
<hr>
性别:{{ gender }}
script部分(在onMounted钩子函数中编写接收参数的代码)
import {onMounted, ref} from 'vue'
import {useRoute} from 'vue-router'
const route = useRoute()
const username = ref('')
const gender = ref(1) // 1男 2女
onMounted(() => {
username.value = route.query.username
gender.value = route.query.gender
})
完整的示例代码
src/views/SourceView.vue
<template>
<div>
<h1>源页面</h1>
<!--通过router-link标签跳转-->
<router-link :to="`/targetView?username=${username}&gender=${gender}`">跳转到目标页面</router-link>
<!--通过js代码跳转-->
<button @click="jumpToTargetView">跳转到目标页面</button>
</div>
</template>
<script setup>
import router from '@/router/index.js'
import {ref} from 'vue'
const username = ref('zhangsan')
const gender = ref(1)
const jumpToTargetView = () => {
router.push({
path: '/targetView',
query: {
username: username.value,
gender: gender.value
}
})
}
</script>
<style scoped>
</style>
src/views/TargetView.vue
<template>
<div>
<h1>目标页面</h1>
用户名:{{ username }}
<hr>
性别:{{ gender }}
</div>
</template>
<script setup>
import {onMounted, ref} from 'vue'
import {useRoute} from 'vue-router'
const route = useRoute()
const username = ref('')
const gender = ref(1) // 1男 2女
onMounted(() => {
username.value = route.query.username
gender.value = route.query.gender
})
</script>
<style scoped>
</style>
热门推荐
遗传咨询检查如何确保孩子健康?
常见的焊接保护气体有哪些?如何选择合适的焊接保护气?
绩效考评系统的使用技巧
锐龙7 9800X3D首次烧毁:微星官方回应正在调查
小心脏 大乾坤|带你认识心脏的构造与常见疾病(上)
留守儿童的家庭教育指南
胎動減少要注意!教你測量、判斷寶寶的胎動訊息
怎么判断胎动是正常还是异常
刷医保养生?医保基金合法合规使用是关键
粉墨登场:从戏曲到政治舞台的成语演变
高速公路免费通行注意事项:以驶出时间为准
专业课深度挖掘:考研复习中的学术前沿与热点
甲功三项和甲功五项有什么区别
人类在地球上存在多少年了?看完涨知识了!建议收藏
多肉可以用纯麦饭石种植吗?答案揭晓!
维生素D和钙怎么补充 如何正确服用维生素D、钙?
张之文老中医运用刘氏桔梗散治疗上焦热证可放胆用之,鲜有不效者
最新多模态大模型综述:连续还是离散?多模态大模型的进化之路
药师提醒:这些药物使用不当也会伤牙,快来自查!
如何提高招聘效率:精准人才画像与高效匹配策略
简历上应聘渠道怎么填
《原神》4.8艾梅莉埃详细培养指南 艾梅莉埃定位、天赋解析与出装攻略
油车、电车、混动车分不清?一文搞懂不同用车需求如何选车!
羽毛球步伐训练方法
测八字忌讳事项 八字禁忌查询方法
正史中的火烧博望坡:揭秘背后的英雄与智慧
走进谷川俊太郎的诗意世界:生命与死亡的深邃思索
第二个“华为”站出来?中国海底光缆制造商:不在乎被美“拉黑”
反文旁跟什么有关
高智商犯罪:探究犯罪者智力与犯罪行为的关系