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


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

    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/...
      
      • 1
    2. router-link-exact-active精确匹配

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

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

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

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

    1.3、跳转传参

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

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

    参数传递:

      
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参数接收:

    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用传递过来的值:

    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1. 动态路由传参

      1. 配置动态路由

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

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

        • $route.params.参数名

    参数传递:

        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参数接受:

    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用传递过来的参数:

    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    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 }
      ]
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    设计模式之观察者模式学习笔记
    Golang开源流媒体服务器(RTMP/RTSP/HLS/FLV等协议)
    算法与设计分析--实验一
    【网络安全】黑客自学笔记
    C#的值类型和引用类型
    哪种主机更适合初创公司租用?云主机与共享主机
    数据结构与算法-从尾到头打印单链表(百度面试题)
    硬件系统工程师宝典(45)-----电源、时钟电路布局小技巧
    Redis客户端常见异常
    大模型Agent最新论文及源码合集,覆盖构建、应用、评估
  • 原文地址:https://blog.csdn.net/m0_63144319/article/details/133745507