Vue3实战笔记(22)—路由Vue-Router 实战指南(路由传参)

文章目录

  • 前言
  • 一、路由router-link
  • 二、路由传参
    • 1.query方式
    • 2.params方式
    • 3.props传参
  • 总结


前言

vue-router 是 Vue.js 官方路由管理器。它和 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得易如反掌。
前面提到过简单的使用路由,直到上文使用404界面发现了个问题,和路由相关,觉得需要掌握的还很多,打算花点时间好好深入的学习一下,路由出山后我觉得问题就能迎刃而解了。


一、路由router-link

前文中我们已经配置好了一些路由,先列出来作为准备工作:

//路由器
import {createRouter,createWebHistory} from 'vue-router'import Home from '@/views/Home.vue'
import HelloSH from '@/views/HelloSH.vue'
import About from '@/views/About.vue'
import Login from '@/views/Login.vue'
import CheckboxVue from '@/views/Checkbox.vue'
import vList from '@/components/vlist.vue'import notFound from '@/views/errors/404.vue'//创建路由器
const router = createRouter({history:createWebHistory(),routes:[{path:'/',component:Home},{path:'/hellosh',component:HelloSH},{path:'/about',component:About},{path:'/login',component:Login},{path:'/checkbox',component:CheckboxVue},{path:'/vlist',component:vList},{// 会匹配所有路径path: "/:pathMatch(.*)*",redirect: '/404'},{path:'/404',components:{mainLayout:notFound}}]
})

使用一个自定义组件 router-link 来创建链接。这使得 Vue Router 可以在不重新加载页面的情况下更改 URL,处理 URL 的生成以及编码。
我在首页增加了两个router-link标签,注意有两种写法:

<template><v-app><v-main><div style="font-size:100px; color:black; position:fixed;box-shadow: 0px 0px 0px #ccc; left:50%;top:33%; " >首页</div><div style="font-size:80px; color:black; position:fixed;box-shadow: 0px 0px 0px #ccc; left:50%;top:50%; " ><RouterLink to="/vlist" >to list</RouterLink> </div><div style="font-size:80px; color:black; position:fixed;box-shadow: 0px 0px 0px #ccc; left:50%;top:70%; " ><router-link to="/checkbox" >to checkbox</router-link> </div></v-main></v-app>
</template><script setup lang='ts' name="Home"></script><style lang='less' scoped></style>

在这里插入图片描述
分别点击跳转到了相应的路由:
在这里插入图片描述
在这里插入图片描述
这个标签比较简单也比较常用就不多说了。

二、路由传参

路由跳转时候经常需要传递参数,再学习几种传参方式。

1.query方式

类似get请求的传参方式,用问号标志,&分隔:,在router-link中:


<div style="font-size:80px; color:black; position:fixed;box-shadow: 0px 0px 0px #ccc; left:50%;top:80%; " ><router-link to="/studyRoute?id=123456&name=shanhua" >to studyRoute</router-link> 
</div>

路由配置:

import studyRoute from '@/views/study/Route.vue'...{path:'/studyRoute/:id', //params方式components:{default:studyRoute}}

StudyRoute.vue:


<template><div>query-------<br>id:{{$route.query.id}}<br>name:{{$route.query.name}}</div></template><script setup lang="ts" name="">
</script><style lang='scss' scoped>
</style>

页面展示效果:
在这里插入图片描述
还有另一种写法:

 <div style="font-size:80px; color:black; position:fixed;box-shadow: 0px 0px 0px #ccc; left:50%;top:80%; " ><router-link :to="{path:'/studyRoute',query:{id:'12345',name:'shanhua'}}">to studyRoute</router-link> </div>

2.params方式

在router-link中:


<div style="font-size:80px; color:black; position:fixed;box-shadow: 0px 0px 0px #ccc; left:50%;top:80%; " ><router-link to="/studyRoute/123456/shanhua" >to studyRoute</router-link> 
</div>

路由配置(注意name在第二种方式中有用的):

{path:'/studyRoute/:id/:name', //params方式name:'studyRoute',components:{default:studyRoute}
}

StudyRoute.vue:


<template><div>query-------<br>id:{{$route.query.id}}<br>name:{{$route.query.name}}</div><div>params-------<br>id:{{$route.params.id}}<br>name:{{$route.params.name}}</div> 
</template><script setup lang="ts" name="">
</script><style lang='scss' scoped>
</style>

运行结果:
在这里插入图片描述
另一种写法:


<div style="font-size:80px; color:black; position:fixed;box-shadow: 0px 0px 0px #ccc; left:50%;top:80%; " ><router-link :to="{name:'studyRoute',//注意此处只能用name不能用pathparams:{id:'12345',name:'shanhua'}}">to studyRoute</router-link> 
</div>

3.props传参

其实这种方式就是让params更加方便的形式,我们在实战中体会。

router-link中的内容不变,还用params方式:

 <div style="font-size:80px; color:black; position:fixed;box-shadow: 0px 0px 0px #ccc; left:50%;top:80%; " ><router-link :to="{name:'studyRoute',params:{id:'12345',name:'shanhua'}}">to studyRoute</router-link> </div>

为了对比,在组件中三种方式都留着,Route.vue:

<template><div>query-------<br>id:{{$route.query.id}}<br>name:{{$route.query.name}} </div><div>params-------<br>id:{{$route.params.id}}<br>name:{{$route.params.name}}</div> <div>props-------<br>id:{{id}}<br>name:{{name}}</div> 
</template><script setup lang="ts" name="">defineProps(['id','name'])
</script><style lang='scss' scoped>
</style>

路由配置:

 {path:'/studyRoute/:id/:name', //props方式name:'studyRoute',props:true,components:{default:studyRoute}}

注意增加了个属性props,这个的作用其实就类似在组件中增加了props:

<Route id=':id' name=':name'></Route>

这样,params参数就像props一样传递给了子组件,vue3的写法就可以接收props:


defineProps(['id','name'])

运行结果:
在这里插入图片描述
props同时也是兼容params的。


总结

路由传参是 vue-router 的核心功能之一,掌握它对于开发复杂的单页应用至关重要。在实际应用中,根据不同的场景选择合适的传参方式,可以使代码更加清晰和易于维护。

人生苦短,若虚度年华,则短暂的人生就太长了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/704051.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑常用的PDF阅读器-嗨动PDF编辑器!带你详细了解它

电脑常用的PDF阅读器-嗨动PDF编辑器&#xff01;在数字化信息爆炸的时代&#xff0c;PDF格式的文件因其易于打印和保留原始格式等优点&#xff0c;成为了人们日常工作和学习的常用格式。而对于PDF文件的处理&#xff0c;一款功能强大、操作简便的PDF阅读器是必不可少的。今天&a…

红酒与美食的完善搭配艺术

在美食的世界里&#xff0c;红酒总是扮演着不可或缺的角色。它与美食的搭配&#xff0c;是一门深奥的艺术。云仓酒庄雷盛红酒&#xff0c;作为一款备受欢迎的红酒品牌&#xff0c;以其卓着的品质和丰富的口感&#xff0c;成为了红酒与美食搭配的典范。 雷盛红酒&#xff0c;源…

重生奇迹mu任务大全都有哪些

1、新手任务适用职业&#xff1a;剑士&#xff0c;弓箭手&#xff0c;魔法师&#xff0c;召唤前面的任务不过是一些根据提示打怪&#xff0c;这个都很容易完成&#xff0c;很多玩家因为感觉没有必要和奖励过低&#xff0c;直接选择已经熟悉游戏知识选项&#xff0c;跳过任务过程…

MQTT_服务器的安装_1.3

此例子是以Windows系统安装开源版本的EMQX 下载 EMQX 下载并解压 解压如图 进入bin 文件夹在文件目录中输入cmd回车 启动服务器 然后在cmd中输入下面的代码&#xff08;会弹出一个访问网络的选项&#xff0c;确认可以访问网络&#xff09; emqx start 结果如图&#xff08;…

干什么副业好呢?

选择适合自己的副业可以根据个人的兴趣、技能和时间来决定。以下是一些常见的副业选择 1. 在线销售 可以在电商平台上开设自己的网店&#xff0c;销售自己感兴趣的产品&#xff0c;如手工艺品、服装、配饰等。 2. 做任务 网上我还在做的致米宝库&#xff0c;一个月有个一千多…

【React】 打包扫描出现高风险文件 YUI 版本太低 JSEncrypt

漏洞定位 扫出漏洞的情况&#xff0c;多是在说下面几个工具&#xff1a; jquery js-cookie jsencrypt 参考链接 YUI:2.9.0 (Link) http://www.cvedetails.com/cve/CVE-2012-5883/ 1.于是在打包后的代码中搜索 YUI&#xff08;不区分大小写&#xff0c;不进行全字匹配&…

电路元件伏安特性的测量

实验目的&#xff1a; 1. 掌握线性电阻、非线性电阻元件伏安特性的测量方法&#xff1b; 2. 掌握伏安测量法中测量样点的选择和绘制曲线的方法&#xff1b; 3. 学习直读式仪表和直流稳压电源等设备的使用方法。 实验原理、内容及步骤&#xff1a; 电路元件的特性一般可用该元…

BGP学习三:BGP路由优选12条规则,闪亮登场啦啦啦啦啦

目录 一.BGP策略工具 &#xff08;1&#xff09;Router-policy作用 &#xff08;2&#xff09;组成部分 &#xff08;3&#xff09;router-policy注意事项 二.优选规则 ①丢弃下一跳不可达 (1)优选prefered-value值大的路由 1.首选优先级 (2)优选local-preference(本地…

实验五 Spark Structured Streaming编程实践

一、编写程序 (1). 按照tag分组统计生成的日志数。 在新开的终端内输入 vi spark_exercise_testsyslog1.py &#xff0c;贴入如下代码并运行。运行之前需要关闭“tail终端”内的tail命令并重新运行tail命令&#xff0c;否则多次运行测试可能导致没有新数据生成。 #!/usr/bin…

msvcp140_codecvt_ids.dll找不到要如何处理?简单的修复方法分享

在使用Windows操作系统时&#xff0c;用户可能会遇到“无法找到msvcp140_codecvt_ids.dll”这一错误信息。该提示通常发生在启动某些应用程序时&#xff0c;提示失去了关键的动态链接库文件&#xff08;DLL&#xff09;依赖。此DLL文件属于Microsoft Visual C Redistributable软…

合并K个升序链表

题目 解法一 优先级队列 思想 将每个链表中的一个节点存放到优先级队列中&#xff0c;本题采用小根堆&#xff0c;将小根堆中的根节点取出&#xff0c;插入到最终的链表中&#xff0c;并且将该节点在原链表中的下一个节点插入小根堆中&#xff08;需要向下调整&#xff09;&a…

七人拼团策略:深度解析奖励体系与互助合作机制

在七人拼团策略中&#xff0c;其精心设计的奖励体系是吸引众多参与者的核心动力。接下来&#xff0c;我们将详细解析这一模式中三种关键的奖励类型&#xff1a;直推奖、滑落奖和团队奖&#xff0c;并探讨它们背后的互助合作机制。 奖励体系解析 在七人拼团中&#xff0c;每一件…