当前位置: 首页 > news >正文

Vue路由进阶--VueRouter声明式导航

Vue路由进阶–VueRouter声明式导航

文章目录

  • Vue路由进阶--VueRouter声明式导航
    • 1、声明式导航
      • 1.1、导航链接
      • 1.2、高亮类名
      • 1.3、跳转传参
      • 1.4、动态路由参数可选符

1、声明式导航

1.1、导航链接

需求:实现导航高亮效果

vue-router提供了一个全局组件router-link(取代a标签)

  1. 跳转,配置 to属性指定路径(必须)。本质还是a标签,to无需#
  2. 高亮,默认就会提供高亮类名,可以直接设置高亮样式

将a标签的代码进行替换:

image-20231010124004537

审查元素将新增的类改变属性:(router-link-exact-active 和 router-link-active)

image-20231010124059816

1.2、高亮类名

说明:我们发现router-link自动给当前导航添加了两个高亮类名(router-link-exact-active 和 router-link-active)

  1. router-link-ctive模糊匹配(用的多)

    to="/my"  => 可以匹配'/my'开头的所有路径,如/my,/my/a/...
    
  2. router-link-exact-active精确匹配

    to="/my"  =>  仅可以匹配/my
    

说明:router-link的两个高亮类名太长了,我们希望能定制怎么办?

const router = new VueRouter({routes: [...],linkActiveclass: "类名1",linkExactActiveclass: "类名2"
})

上述操作相当于实现了自定义的类名,将两个高亮的类名进行自定义以达到简写或其他目的。

1.3、跳转传参

在跳转路由时,进行传值,有一下两种方式:

  1. 查询参数传参
    1. 语法格式如下
      • to=“/path?参数名=值”
    2. 对应页面组件接收传递过来的值
      • $route.query.参数名

参数传递:

  <div class="hot-link">热门搜索:<router-link to="/search?key=程序员">程序员</router-link><router-link to="/search?key=前端培训">前端培训</router-link><router-link to="/search?key=如何成为前端大牛">如何成为前端大牛</router-link></div>

参数接收:

<template><div><p>搜索关键字: {{ $route.query.key }} </p></div>
</template>

使用传递过来的值:

<template><div><p>搜索关键字: {{ $route.query.key }} </p></div>
</template>
<script>
export default {created () {// 在created中,获取路由参数:// this.$route.query.参数名console.log(this.$route.query.key);//拿到值之后就发请求,然后渲染到页面}
}
</script>
  1. 动态路由传参

    1. 配置动态路由

      const router = new VueRouter({routes: [{ path: '/search/:参数名', component: Search }]
      })
      
    2. 配置导航链接

      • to=“/path/参数值”
    3. 对应页面组件接收传递过来的值

      • $route.params.参数名

参数传递:

    <div class="hot-link">热门搜索:<router-link to="/search/程序员">程序员</router-link><router-link to="/search/前端培训">前端培训</router-link><router-link to="/search/如何成为前端大牛">如何成为前端大牛</router-link></div>

参数接受:

<template><div><p>搜索关键字: {{ $route.params.words }} </p></div>
</template>

使用传递过来的参数:

<script>
export default {name: 'MyFriend',created () {// 在created中,获取路由参数// this.$route.query.参数名 获取查询参数// this.$route.params.参数名 获取动态路由参数console.log(this.$route.params.words);}
}
</script>

两种传参方式哪种要好一些:

  1. 查询参数传参((比较适合传多个参数)
  2. 动态路由传参(优雅简洁,传单个参数比较方便)

1.4、动态路由参数可选符

问题:配了路由path: "/search/:words”为什么按下面步骤操作,路径上没有参数,会未匹配到组件,显示空白?

image-20231010133422139

原因:/search/:words表示,必须要传参数。如果不传参数,也希望匹配,可以加个可选符"?"

解决:

const router = new VueRouter({routes: [{ path: '/home', component: Home },{ path: '/search/:words?', component: Search }]
})
http://www.lryc.cn/news/187444.html

相关文章:

  • Oracle 云服务即将支持 PostgreSQL!
  • 数字孪生项目:突破技术难关,引领未来发展
  • MySQL 如何使用离线模式维护服务器
  • 期权开户流程合集——期权开户的操作步骤
  • mysql改造oracle,以及项目改造
  • 利用互斥锁实现多个线程写一个文件
  • 【m98】视频缓存PacketBuffer 1 : SeqNumUnwrapper int64映射、ForwardDiff
  • day58:ARMday5,GPIO流水灯实验
  • Linux shell编程学习笔记9:字符串运算 和 if语句
  • 【分享】xpath的属性表达式
  • Oracle Dataguard跨版本数据迁移(11.2.0.4~19.13.0.0)
  • 零基础Linux_14(基础IO_文件)缓冲区+文件系统inode等
  • Vue中的router路由的介绍(快速入门)
  • ESP-07S进行TCP 通信测试
  • 如何找到新媒体矩阵中存在的问题?
  • MongoDB-基本常用命令
  • Linux 常用systemctl service 脚本
  • flask-sqlalchemy实现读写分离完整版
  • windows下在cmd和git bash中执行bash download.sh失败
  • rust流程控制
  • 虚拟机软件Parallels Desktop 19 mac功能介绍
  • 在工业机器视觉领域中应用钡铼技术有限公司的EtherCAT网关
  • ssh指定的密钥协商方式以及Ansible的hosts文件修改密钥协商方式
  • NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
  • QT sqlite的简单用法
  • 大模型部署手记(12)LLaMa2+Chinese-LLaMA-Plus-2-7B+Windows+text-gen+中文对话
  • C#导出本机Win32native dll
  • express-generator快速构建node后端项目
  • 视频监控系统/视频汇聚平台EasyCVR如何反向代理进行后端保活?
  • 金融信创黄金三年:小程序生态+跨端技术框架构建