VueRouter3学习笔记

文章目录

  • 1,入门案例
  • 2,一些细节
    • 高亮效果
    • 非当前路由会被销毁
  • 3,嵌套路由
  • 4, 传递查询参数
  • 5,命名路由
  • 6,传递路径参数
  • 7,路径参数转props
  • 8,查询参数转props
  • 9,replace模式
  • 10,编程式导航
  • 11,缓存路由组件
  • 12,新生命周期
  • 13,路由守卫

1,入门案例

安装库。

npm install vue-router@3

准备三个组件。
App.vue
AAA.vue
BBB.vue

<template>
  <div>
    <router-link to="/a">aaa</router-link>
    <router-link to="/b">bbb</router-link>
    <router-view />
  </div>
</template>

<template>
  <div>AAA</div>
</template>

<template>
  <div>BBB</div>
</template>

新建router.js。

import Vue from 'vue'
import VueRouter from 'vue-router'
import AAA from "./AAA.vue"
import BBB from "./BBB.vue"

Vue.use(VueRouter)

const router = new VueRouter({
    routes: [
        { path: '/a', component: AAA },
        { path: '/b', component: BBB }
    ]
})
export default router

main.js。

import router from './router.js'

new Vue({
  render: h => h(App),
  router
}).$mount('#app')

效果:

在这里插入图片描述
在这里插入图片描述

2,一些细节

高亮效果

router-link的active-class属性,指定当前路由链接的高亮类名。

<template>
  <div>
    <router-link to="/a" active-class='abc'>aaa</router-link>
    <router-link to="/b" active-class='abc'>bbb</router-link>
    <router-view />
  </div>
</template>
<style>
.abc {
  color: red;
}
</style>

非当前路由会被销毁

<template>
  <div>AAA</div>
</template>
<script>
export default {
  beforeDestroy() {
    console.log(1);
  }
}
</script>

3,嵌套路由

AAA内还有CCC和DDD。

二级路由链接要从一级开始写,
配置项无须加斜线。

<template>
  <div>
    <router-link to="/a">aaa</router-link>
    <router-link to="/b">bbb</router-link>
    <router-view />
  </div>
</template>

<template>
  <div>
    <router-link to="/a/c">ccc</router-link>
    <router-link to="/a/d">ddd</router-link>
    <router-view />
  </div>
</template>

<template>
  <div>BBB</div>
</template>

<template>
  <div>CCC</div>
</template>

<template>
  <div>DDD</div>
</template>

router.js。

import Vue from 'vue'
import VueRouter from 'vue-router'
import AAA from "./AAA.vue"
import BBB from "./BBB.vue"
import CCC from './CCC.vue'
import DDD from './DDD.vue'
Vue.use(VueRouter)

const router = new VueRouter({
    routes: [
        {
            path: '/a', component: AAA,
            children: [{
                path: 'c', component: CCC
            }, {
                path: 'd', component: DDD
            }]
        },
        { path: '/b', component: BBB }
    ]
})
export default router

4, 传递查询参数

发送。

<template>
  <div>
    <router-link to="/a?id=123">aaa</router-link>
    <router-link to="/a?id=124">aaa</router-link>
    <router-link to="/b">bbb</router-link>
    <router-view />
  </div>
</template>

接收。

<template>
  <div>AAA{{ $route.query.id }}</div>
</template>

发送的第二种写法。

<template>
  <div>
    <router-link :to="{
      path: '/a',
      query: {
        id: 123
      }
    }">aaa</router-link>
    <router-link to="/a?id=124">aaa</router-link>
    <router-link to="/b">bbb</router-link>
    <router-view />
  </div>
</template>

5,命名路由

给路由起个名字。

import Vue from 'vue'
import VueRouter from 'vue-router'
import AAA from "./AAA.vue"
import BBB from "./BBB.vue"

Vue.use(VueRouter)

const router = new VueRouter({
    routes: [
        { path: '/a', component: AAA, name: "a" },
        { path: '/b', component: BBB, name: "b" }
    ]
})
export default router

跳转时传递名称。

<template>
  <div>
    <router-link :to="{
      name: 'a'
    }">aaa</router-link>
    <router-link :to="{
      name: 'b'
    }">bbb</router-link>
    <router-view />
  </div>
</template>

6,传递路径参数

发送。

<template>
  <div>
    <router-link to="/a/123">aaa</router-link>
    <router-link to="/a/124">aaa</router-link>
    <router-link to="/b">bbb</router-link>
    <router-view />
  </div>
</template>

配置。

import Vue from 'vue'
import VueRouter from 'vue-router'
import AAA from "./AAA.vue"
import BBB from "./BBB.vue"

Vue.use(VueRouter)

const router = new VueRouter({
    routes: [
        { path: '/a/:id', component: AAA },
        { path: '/b', component: BBB }
    ]
})
export default router

接收。

<template>
  <div>AAA{{ $route.params.id }}</div>
</template>

7,路径参数转props

启用props,会将所有路径参数通过props传递给组件。

import Vue from 'vue'
import VueRouter from 'vue-router'
import AAA from "./AAA.vue"
import BBB from "./BBB.vue"

Vue.use(VueRouter)

const router = new VueRouter({
    routes: [
        { path: '/a/:id', component: AAA, props: true },
        { path: '/b', component: BBB }
    ]
})
export default router

组件要声明该props。

<template>
  <div>AAA{{ id }}</div>
</template>
<script>
export default {
  props: ['id']
}
</script>

8,查询参数转props

props写成函数。

import Vue from 'vue'
import VueRouter from 'vue-router'
import AAA from "./AAA.vue"
import BBB from "./BBB.vue"

Vue.use(VueRouter)

const router = new VueRouter({
    routes: [
        {
            path: '/a', component: AAA, props(route) {
                return {
                    id: route.query.id
                }
            }
        },
        { path: '/b', component: BBB }
    ]
})
export default router

9,replace模式

替换掉之前的路由,而不是压栈。

<template>
  <div>
    <router-link to="/a" replace>aaa</router-link>
    <router-link to="/b" replace>bbb</router-link>
    <router-view />
  </div>
</template>

10,编程式导航

代码进行跳转。

<template>
  <div>
    <div>AAA</div>
    <button @click="add">按钮</button>
  </div>
</template>
<script>
export default {
  methods: {
    add() {
      this.$router.push("/b")
    }
  },
}
</script>

参数可以是对象,与前面route-link的to用法一致。

11,缓存路由组件

不销毁。

<keep-alive>
  <router-view />
</keep-alive>

12,新生命周期

不销毁的时候,激活与失活。

<template>
  <div>
    <div>AAA</div>
  </div>
</template>
<script>
export default {
  activated() {
    console.log(1);
  },
  deactivated() {
    console.log(2);
  },
}
</script>

13,路由守卫

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue--》从零开始打造交互体验一流的电商平台(二)

今天开始使用 vue3 + ts 搭建一个电商项目平台,因为文章会将项目的每处代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关注本专栏,学习更多…

SAP Build 1-工作流表单开发

1. BTP SAP Build环境配置 1.1 启用试用账号 访问BTP trial&#xff0c;启用试用账号&#xff0c;没有的话注册一个即可 https://account.hanatrial.ondemand.com/trial/#/home/trial 注册完之后就会让选择区域&#xff0c;要选US的区域才有自动化相关的功能 然后就开始生成…

什么是Java?

什么是Java&#xff1f;java是什么&#xff1f;下面我们来总结一下。 java是什么&#xff1f; java是一个静态编程语言&#xff0c;具有强大的多线程特征&#xff0c;目前java不仅采用c语言的优点&#xff0c;还去掉了一些多继承指针&#xff0c;等复杂的概念&#xff0c;我们…

跟着大佬学RE(六)

findKey 嗯&#xff0c;就是一个窗口程序&#xff0c;没有输入&#xff0c;flag 应该就藏在程序里面 第一遍自己直接莽做&#xff0c;在string窗口&#xff0c;找到 flag{} 看到标红直接 nop 然后&#xff0c;然后就不知道怎么搞了 这串字符提示不能随便 nop &#xff0c;重新…

优设AI导航

1、优设AI导航 优设AI导航

13. UDP协议与RTP协议

UDP协议 UDP协议比较简单&#xff1a; UDP的长度是固定的&#xff0c;用总长度-UDP长度就是数据长度。 UDP是不保证他的有序性和可靠性的。对于音频和视频是这样是比较好的&#xff0c;因为这段丢了&#xff0c;我们可以从下一段在开始解码。 RTP RTP 协议概述 RTP&#x…

【前端】详解JavaScript事件代理(事件委托)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

简单了解java中的异常

异常 1、异常的概述 1.1、概述 异常就是程序出现了不正常的情况&#xff0c;程序在执行过程中&#xff0c;数据导致程序不正常&#xff0c;最终导致JVM的非正常停止。语句错误不算在异常体系中。 1.2、异常的存在形式 异常有类型之分&#xff0c;比如我们比较熟悉的数组越…

安装golang

官网:All releases - The Go Programming Language (google.cn) 下载对应的版本安装即可

数据结构初阶 · 链式二叉树的部分问题

目录 前言&#xff1a; 1 链式二叉树的创建 2 前序 中序 后序遍历 3 树的节点个数 4 树的高度 5 树的叶子节点个数 6 树的第K层节点个数 前言&#xff1a; 链式二叉树我们在C语言阶段已经实现了&#xff0c;这里介绍的是涉及到的部分问题&#xff0c;比如求树的高度&am…

liquibase做数据库版本管理

通过这个配置就会自动启动liquibase 比对 https://www.cnblogs.com/ludangxin/p/16676701.html https://zhuyizhuo.github.io/2020/07/04/spring-boot/spring-boot-liquibase-database-version-control/

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第10章——实数

第2 部分&#xff1a;数学分析中的基本概念 (Concepts in Analysis) 10. 实数(The Real Numbers) 本章介绍比率数(rational numbers)和非比数(irrational numbers)及其与十进制展开的关系。讨论了实数的公理&#xff0c;并解释了完备性公理对于区分实数和比率数为何必不可少&…

IDEA启动项目报java.lang.OutOfMemoryError: GC overhead limit exceeded

idea编译项目时报j ava.lang.OutOfMemoryError: GC overhead limit exceeded错误&#xff0c;教你两步搞定&#xff01; 第一步&#xff1a;打开help -> Edit Custom VM Options ,修改xms和xmx的大小&#xff0c;如下图&#xff1a; 第二步&#xff1a;File -> Settings…

基于JSP的足球赛会管理系统

你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 首页 个人中心 球队介绍…

使用 Sysbench 测试文件的读写速度

要使用 Sysbench 测试文件的读写速度&#xff0c;你可以按照以下步骤进行&#xff1a; 安装 Sysbench&#xff1a; 如果你还没有安装 Sysbench&#xff0c;可以通过以下命令在 Ubuntu 上安装&#xff1a; sudo apt install sysbench创建测试文件&#xff1a; 首先&#xff0c…

Xilinx(AMD) vivado对FPGA网表文件进行功能仿真的方法

1 概述 在FPGA开发中很多商用IP核出于知识产权保护的目的&#xff0c;不提供源代码&#xff0c;而是提供综合后的FPGA网表。由于没有源代码&#xff0c;也无法对网表文件直接进行仿真的操作来验证功能&#xff0c;此时需要独立的仿真模型文件。 本文介绍在Xilinx(AMD) vivado软…

LVGL移植和图片显示

最近闲来无事&#xff0c;偶尔刷到了移植LVGL的教程&#xff0c;今天肝完了机械原理又移植完LVGL库&#xff0c;真是收获满满的一天&#xff0c;先接一杯水去。 回来了&#xff0c;发个朋友圈高级一下&#xff0c;好困。 lvgl v8.3移植及组件使用_lvgl界面编辑器-CSDN博客htt…

MySQL限制登陆失败次数配置

目录 一、限制登陆策略 1、Windows 2、Linux 一、限制登陆策略 1、Windows 1&#xff09;安装插件 登录MySQL数据库 mysql -u root -p 执行命令安装插件 #限制登陆失败次数插件 install plugin CONNECTION_CONTROL soname connection_control.dll;install plugin CO…

英伟达:史上最牛一笔天使投资

200万美元的天使投资&#xff0c;让刚成立就面临倒闭风险的英伟达由危转安&#xff0c;并由此缔造了一个2.8万亿美元的市值神话。 这是全球风投史上浓墨重彩的一笔。 前不久&#xff0c;黄仁勋在母校斯坦福大学的演讲中&#xff0c;提到了人生中的第一笔融资——1993年&#x…

离散数学答疑 5

知识点&#xff1a;单侧连通&#xff0c;强连通&#xff0c;弱连通 前缀码&#xff1a;比如001和00101就不是。因为后者的前三位和前者的重复了 有向图的邻接矩阵求法&#xff1a;横着看 数据结构21-4分钟搞定邻接矩阵_哔哩哔哩_bilibili 可达矩阵是包含自反性的。可达矩阵是…