Vue路由二(嵌套多级路由、路由query传参、路由命名、路由params传参、props配置、<router-link>的replace属性)
目录
- 1. 嵌套(多级)路由
- 2. 路由query传参
- 3. 路由命名
- 4. 路由params传参
- 5. props配置
- 6. `<router-link>`的replace属性
1. 嵌套(多级)路由
- pages/Car.vue
<template><ul><li>car1</li><li>car2</li><li>car3</li></ul>
</template><script>export default {name:'Car'}
</script>
- pages/Music.vue
<template><div><ul><li><a href="/music1">music1</a> </li><li><a href="/music2">music2</a> </li><li><a href="/music3">music3</a> </li></ul></div>
</template><script>export default {name:'Music'}
</script>
- router/index.js。使用children定义嵌套路由的url路径和组件映射规则。嵌套路由的path不用添加/
import VueRouter from 'vue-router'
import About from '../pages/About'
import News from '../pages/News'// 引入组件
import Car from '../pages/Car'
import Music from '../pages/Music'export default new VueRouter({routes:[{path:'/about',component:About},{path:'/news',component:News,// 嵌套路由children:[{path:'car',component:Car},{path:'music',component:Music}]}]
})
- News.vue。使用<router-link>标签进行路由的跳转,嵌套路由的to路径为url全路径。使用<router-view>标签显示激活的组件
<template><div><h2>我是News的内容</h2><div><ul class="nav nav-tabs"><li><router-link class="list-group-item" active-class="active" to="/news/car">Car</router-link></li><li><router-link class="list-group-item" active-class="active" to="/news/music">Music</router-link></li></ul><router-view></router-view></div></div>
</template><script>export default {name:'News'}
</script>
- 启动项目。点击Car,页面的url变成了http://localhost:8080/music1#/news/car,但是并没有重新加载一次页面。页面显示如下。导航栏的Car激活css样式,而且内容区显示Car组件的内容

点击Music,页面的url变成了http://localhost:8080/music1#/news/music,但是并没有重新加载一次页面。页面显示如下。导航栏的Music激活css样式,而且内容区显示Music组件的内容

2. 路由query传参
- Music.vue
- for循环出3个超链接,超链接的url都是一样,就是传递的参数不一样
- 有两种传参方式。一种是字符串写法;一种是对象写法
- 通过<router-view>标签显示激活的Detail组件。虽然都是同一个组件,但是Detail组件由于接收的参数不一样,所以显示的内容也不一样
<template><div><ul><li v-for="m in musicList" :key="m.id"><!-- 跳转路由并携带query参数,to的字符串写法 --><!-- <router-link :to="`/news/music/detail?id=${m.id}&title=${m.title}`">{{m.title}}</router-link> --><!-- 跳转路由并携带query参数,to的对象写法 --><router-link :to="{path:'/news/music/detail',query:{id:m.id,title:m.title}}">{{ m.title }}</router-link></li></ul><hr><router-view></router-view></div>
</template><script>
export default {name: 'Music',data() {return {musicList: [{id: 1, title: 'music1'},{id: 2, title: 'music2'},{id: 3, title: 'music3'}]}}
}
</script>
- Detial.vue。通过
$route属性接收传递过来的参数
<template><ul><li>消息编号:{{$route.query.id}}</li><li>消息标题:{{$route.query.title}}</li></ul>
</template><script>export default {name:'Detail'}
</script>
- src/router/index.js
import VueRouter from 'vue-router'import About from '../pages/About'
import News from '../pages/News'
import Car from '../pages/Car'
import Music from '../pages/Music'// 引入组件
import Detail from '../pages/Detail'export default new VueRouter({routes:[{path:'/about',component:About},{path:'/news',component:News,children:[{path:'car',component:Car},{path:'music',component:Music,children:[{path:'detail',component:Detail}]}]}]
})
- 启动项目。点击music1,页面的url变成了http://localhost:8080/#/news/music/detail?id=1&title=music1,但是并没有重新加载一次页面。页面显示如下。内容区显示Detail组件接收到id=1的相关内容

点击music2,页面的url变成了http://localhost:8080/#/news/music/detail?id=2&title=music2,但是并没有重新加载一次页面。页面显示如下。内容区显示Detail组件接收到id=2的相关内容

点击music3,页面的url变成了http://localhost:8080/#/news/music/detail?id=3&title=music3,但是并没有重新加载一次页面。页面显示如下。内容区显示Detail组件接收到id=3的相关内容

3. 路由命名
应用场景: 当路由嵌套层级很多时,<router-link>的to属性的url路径很长,可以使用路由命名来简化url路径的长度
- src/router/index.js如下。给路由映射规则添加name属性
......省略部分......
export default new VueRouter({routes:[......省略部分......{path:'/news',component:News,children:[......省略部分......{path:'music',component:Music,children:[{name:'detail',path:'detail',component:Detail}]}]}]
})
- Music.vue。直接使用name属性,来替换path属性
<template><div><ul><li v-for="m in musicList" :key="m.id"><!-- 跳转路由并携带query参数,to的对象写法 --><router-link :to="{name:'detail',// path:'/news/music/detail',query:{id:m.id,title:m.title}}">{{ m.title }}</router-link></li></ul><hr><router-view></router-view></div>
</template>
......省略部分......
4. 路由params传参
- Music.vue
- to的字符串写法,params参数直接拼接在url中
- to的对象写法,使用params属性传参。这里不能使用path跳转路径,需要使用name跳转路径
<template><div><ul><li v-for="m in musicList" :key="m.id"><!-- 跳转路由并携带params参数,to的字符串写法 --><!-- <router-link :to="`/news/music/detail/${m.id}/${m.title}`">{{m.title}}</router-link> --><!-- 跳转路由并携带params参数,to的对象写法 --><router-link :to="{name:'detail',params:{id:m.id,title:m.title}}">{{ m.title }}</router-link></li></ul><hr><router-view></router-view></div>
</template>
......省略部分......
- src/router/index.js如下。在路由映射规则的path中,需要使用
detail/:id/:title给params参数进行占位
......省略部分......
export default new VueRouter({routes:[......省略部分......{path:'/news',component:News,children:[......省略部分......{path:'music',component:Music,children:[{name:'detail',path:'detail/:id/:title',component:Detail}]}]}]
})
- Detail.vue。使用
$route.params.id方式接收参数
<template><ul><li>消息编号:{{$route.params.id}}</li><li>消息标题:{{$route.params.title}}</li></ul>
</template><script>export default {name:'Detail'}
</script>
5. props配置
作用:让路由组件更方便的收到参数
- src/router/index.js。props有三种接收并传递参数的方式
- 值为对象。该对象中的所有key-value都会以props的形式传给Detail组件,传递的值固定
- 值为布尔值。若布尔值为真,把该路由组件收到的所有params参数值,以props的形式传给Detail组件
- 值为函数。函数自动接收$route参数。同时适用于params和query传参
......省略部分......
export default new VueRouter({routes:[......省略部分......{path:'/news',component:News,children:[......省略部分......{path:'music',component:Music,children:[{name:'detail',// path:'detail/:id/:title',component:Detail,// path:'detail',// props的第一种写法: 值为对象。该对象中的所有key-value都会以props的形式传给Detail组件,传递的值固定// props:{id:1, title:'music1'}// path:'detail/:id/:title',// props的第二种写法,值为布尔值。若布尔值为真,把该路由组件收到的所有params参数值,以props的形式传给Detail组件// props:truepath:'detail/:id/:title',// props的第三种写法,值为函数。函数自动接收$route参数。同时适用于params和query传参。这里同时使用了解构赋值语法props({params:{id,title}}){return {id:id,title:title}}}]}]}]
})
- Detail.vue。先使用props接收路由传递过来的参数,然后就可以直接使用了
<template><ul><!-- 常规接收参数值方法 --><!-- <li>消息编号:{{$route.params.id}}</li> --><!-- <li>消息标题:{{$route.params.title}}</li> --><!-- 使用props中的参数值 --><li>消息编号:{{id}}</li><li>消息标题:{{title}}</li></ul>
</template><script>export default {name:'Detail',// 使用props接收参数props: ['id', 'title']}
</script>
6. <router-link>的replace属性
作用:控制路由跳转时,操作浏览器历史记录的模式
浏览器的历史记录有两种写入方式:
- push:默认。追加历史记录。可以在浏览器进行访问的前进和后退,因为指针的指向改变了
- replace,替换当前指针所在的记录。不可以在浏览器进行访问的前进和后退。开启replace模式:
<router-link replace>About</router-link>,或<router-link :replace="true">About</router-link>
相关文章:
Vue路由二(嵌套多级路由、路由query传参、路由命名、路由params传参、props配置、<router-link>的replace属性)
目录 1. 嵌套(多级)路由2. 路由query传参3. 路由命名4. 路由params传参5. props配置6. <router-link>的replace属性 1. 嵌套(多级)路由 pages/Car.vue <template><ul><li>car1</li><li>car2</li><li>car3</li></ul…...
【RabbitMQ】可靠性传输
概述 作为消息中间件来说,最重要的任务就是收发消息。因此我们在收发消息的过程中,就要考虑消息是否会丢失的问题。结果是必然的,假设我们没有采取任何措施,那么消息一定会丢失。对于一些不那么重要的业务来说,消息丢失…...
【论文阅读】PERCEIVER-ACTOR: A Multi-Task Transformer for Robotic Manipulation
Abstract transformers凭借其对大型数据集的扩展能力,彻底改变了视觉和自然语言处理。但在机器人操作中,数据既有限又昂贵。通过正确的问题表述,操纵仍然可以从变形金刚中受益吗?我们使用peract来研究这个问题,peract…...
Linux 常用指令
Linux 常用指令 这是本人在备战 CSP 初赛做 Linux 指令题时,心血来潮整理的,希望对大家有帮助。如有错误或有补充,麻烦私信或评论指出。 表格按字母顺序排列 命令作用alias对命令重命名cal显示日历的指令cat查看文本文件的内容cd改变当前工…...
使用 PHPstudy 建立ThinkPHP8 本地集成环境
安装Composer 下载地址:https://getcomposer.org/Composer-Setup.exehttps://getcomposer.org/Composer-Setup.exe 打开PHPstudy创建网站: cmd终端进入PHPstudy www根目录下: 执行代码:cd phpstudy www 根目录地址 cd C:\phpst…...
【系统架构设计】软件的知识产权保护+标准化概论+应用数学+云计算
【系统架构设计】软件的知识产权保护标准化概论应用数学云计算 软件的知识产权保护标准化概论应用数学云计算 软件的知识产权保护 在该部分内容中,以下几点需要注意: 如果作品是委托创作的,著作权的归属应通过委托人和受托人之间的合同来确…...
解决使用阿里云DataV Geo在线地图路径访问403问题
文章目录 1. DataV Geo在线地图路径访问403问题2. 解决方法3. 重启生效 1. DataV Geo在线地图路径访问403问题 最近在写一个省市下钻的demo,用到的是 阿里云DataV Geo在线地图 去动态获取GeoJSON 省市的数据,如下代码 axios.get("https://geo.dat…...
linux 使用SSH密钥配置免密登录
需求:多台主机SSH免密登录,需要使用同一个密钥对 操作: 在Linux中,使用SSH密钥对来在多台主机之间配置免密登录。以下是配置步骤: 在你的本地机器上生成一个SSH密钥对。如果你已经有一个,你可以跳过这一…...
python教程(二):python数据结构大全(附代码)
Python 中数据结构的重要性不言而喻,它们是构建高效、可维护代码的基础。数据结构决定了如何存储、组织和操作数据。理解和使用合适的数据结构能够极大地提升程序的性能、简洁性以及代码的可读性。 Python 的基础数据结构有 4 种,分别是 列表 (list)、元…...
MySQL基于GTID同步模式搭建主从复制
系列文章目录 rpmbuild构建mysql5.7.42版本的rpm包 文章目录 系列文章目录一、mysql-5.7.42RPM包构建二、同步模式分类介绍1.异步同步模式2.半同步模式2.1.实现半同步操作流程2.2.半同步问题总结2.3.半同步一致性2.4.异步与半同步对比 3.GTID同步 三、GTID同步介绍1.gtid介绍2…...
RecyclerView的子项长按选择功能
在Android开发中,实现RecyclerView的子项长按选择功能通常涉及到几个关键步骤:设置RecyclerView的ItemTouchListener来监听长按事件,管理选中状态,以及更新UI以反映选中状态。以下是一个基本的实现步骤和示例代码。 1. 定义数据模…...
mongoDB-1
文章目录 一、疑似坑1.11.2 mongo ops manager1.3 mongo features视图固定大小集合(有点类似ringbuffer数据结构,capped collections)(聚簇集合)clustered collection(类比到Mysql的聚簇索引)聚合管道 aggregation pipelineWiredTiger (默认存…...
iKuai使用及设置流程
iKuai使用及设置流程 iKuai安装步骤 一、配置主机 1.电脑连接ETH0网口 2.ETH1网口连接猫上面的千兆口 3.手动配置pc的IP地址和192.168.1.1./24在同一网段 3.浏览器输入192.168.1.1 admin admin 二、外网设置 1.直接联通电信网络设置 2.点击 网络设置-内外网设置-点击接…...
【乐企-业务篇】销项开票接口声明(主要是业务对接)
我们系统销项对接了四家,所以抽象出来一个接口 专门用来定义销项相关的接口声明 代码如下 import java.util.List;/*** User: yanjun.hou* Date: 2024/9/4 10:07* Description:开票策略*/ public interface InvoiceStrategy {/*** 开票** @param order...
Pytest配置文件pytest.ini如何编写生成日志文件?
1、新建pytest.ini文件 [pytest] log_clitrue log_leveLNOTSET log_format %(asctime)s %(levelname)s %(message)s %(filename)s %(funcName)s %(lineno)d log_date_format %Y-%m-%d %H:%M:%Slog_file ./logdata/log.log log_file_level info log_file_format %(asctime…...
rust快速创建Tauri App ——基于create-tauri-app
Tauri App Tauri是一个工具包,可以帮助开发人员使用现有的几乎任何前端框架为主要桌面平台制作应用程序。核心是用Rust构建的,CLI利用Node.js使Tauri成为创建和维护优秀应用程序的真正多语言方法。 cargo install create-tauri-appcreate-tauri-app&am…...
【MySQL】MySQL中JDBC编程——MySQL驱动包安装——(超详解)
前言: 🌟🌟本期讲解Java中JDBC编程,希望能帮到屏幕前的你。 🌈上期博客在这里:【MySQL】MySQL索引与事务的透析——(超详解)-CSDN博客 🌈感兴趣的小伙伴看一看小编主页&a…...
电脑安装OpenWRT系统
通过网盘分享的文件:OpenWRT 链接: https://pan.baidu.com/s/1nrRBeKgGviD31Omji480qA?pwd9900 提取码: 9900 下面开始教程: 1.先把普通U盘制作成一个PE启动盘,我用的是微PE工具箱,直接安装PE到U盘。 2.把写盘工具和openWRT系统…...
说说几款耳机
从前,大约在戴森推出他们那款奇特的发明——戴森耳机与空气净化器组合一年后,人们仍对这个奇怪的产品感到困惑。这款穿戴式空气净化耳机更像是一个实验,缺乏实际用途。回想起那时的评测,大家一致认为这是有史以来最无意义的产品之…...
Excel爬虫使用实例-百度热搜
原来excel也能爬虫抓取数据,而且简单好用 目标网址: https://top.baidu.com/board?tabrealtime 下面是一个excel爬虫的小小例子,爬取了百度热搜的前50(还有一个置顶的热搜没有1,2,3编号) 实现…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
