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

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,路由守卫

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【求助】ansible synchronize 问题
  • 【玩转C语言】第四讲--->操作符与循环语句
  • 未来AI大模型的发展趋势
  • MySQL之查询性能优化(十三)
  • 如何使用共享GPU平台搭建LLAMA3环境(LLaMA-Factory)
  • 【云原生】Kubernetes----RBAC用户资源权限
  • 适用于 Windows 的 8 大数据恢复软件
  • 地图商家数据怎么查看?揭秘采集软件工作原理!
  • Rust 实战丨SSE(Server-Sent Events)
  • 深度学习的点云分割
  • 【JS封装-工具函数】强化编程实践:精选JavaScript函数封装集锦-关于工具函数 (如深度克隆、浅拷贝、递归、防抖和节流等)
  • 【Python】使用 SQLObject orm 库快速将接口数据存入数据库
  • 家族企业如何找到合适的人才
  • 存在 ZooKeeper 未授权访问【原理扫描】--通过防火墙策略进行修复
  • Qt实现程序单实例运行(只能运行1个进程)及QSharedMemory用法
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • CAP 一致性协议及应用解析
  • Effective Java 笔记(一)
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript 奇技淫巧
  • Javascript弹出层-初探
  • javascript面向对象之创建对象
  • Java超时控制的实现
  • Node项目之评分系统(二)- 数据库设计
  • Objective-C 中关联引用的概念
  • Python连接Oracle
  • React Transition Group -- Transition 组件
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Sublime Text 2/3 绑定Eclipse快捷键
  • TCP拥塞控制
  • 回顾2016
  • 机器学习中为什么要做归一化normalization
  • 聊聊directory traversal attack
  • 排序算法之--选择排序
  • 学习使用ExpressJS 4.0中的新Router
  • 一个项目push到多个远程Git仓库
  • 智能网联汽车信息安全
  • 昨天1024程序员节,我故意写了个死循环~
  • ​补​充​经​纬​恒​润​一​面​
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (c语言)strcpy函数用法
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (k8s)kubernetes集群基于Containerd部署
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)计算机毕业设计大学生兼职系统
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • .bat批处理出现中文乱码的情况
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .Net Remoting常用部署结构
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .Net的DataSet直接与SQL2005交互