VueRouter3学习笔记

文章目录

1,入门案例

安装库。

javascript 复制代码
npm install vue-router@3

准备三个组件。

App.vue

AAA.vue

BBB.vue

html 复制代码
<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。

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。

js 复制代码
import router from './router.js'

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

效果:


2,一些细节

高亮效果

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

html 复制代码
<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>

非当前路由会被销毁

html 复制代码
<template>
  <div>AAA</div>
</template>
<script>
export default {
  beforeDestroy() {
    console.log(1);
  }
}
</script>

3,嵌套路由

AAA内还有CCC和DDD。

二级路由链接要从一级开始写,

配置项无须加斜线。

html 复制代码
<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。

javascript 复制代码
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, 传递查询参数

发送。

html 复制代码
<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>

接收。

html 复制代码
<template>
  <div>AAA{{ $route.query.id }}</div>
</template>

发送的第二种写法。

html 复制代码
<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,命名路由

给路由起个名字。

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, name: "a" },
        { path: '/b', component: BBB, name: "b" }
    ]
})
export default router

跳转时传递名称。

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

6,传递路径参数

发送。

html 复制代码
<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>

配置。

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/:id', component: AAA },
        { path: '/b', component: BBB }
    ]
})
export default router

接收。

html 复制代码
<template>
  <div>AAA{{ $route.params.id }}</div>
</template>

7,路径参数转props

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

javascript 复制代码
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。

html 复制代码
<template>
  <div>AAA{{ id }}</div>
</template>
<script>
export default {
  props: ['id']
}
</script>

8,查询参数转props

props写成函数。

javascript 复制代码
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模式

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

html 复制代码
<template>
  <div>
    <router-link to="/a" replace>aaa</router-link>
    <router-link to="/b" replace>bbb</router-link>
    <router-view />
  </div>
</template>

10,编程式导航

代码进行跳转。

html 复制代码
<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,缓存路由组件

不销毁。

html 复制代码
<keep-alive>
  <router-view />
</keep-alive>

12,新生命周期

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

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

13,路由守卫

相关推荐
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.几秒前
Redis主从复制配置全攻略
数据库·redis·笔记
豆瓣鸡1 小时前
Gradle学习
学习
海绵宝宝的月光宝盒1 小时前
2-非金属材料
经验分享·笔记·学习·其他·职场和发展·课程设计·制造
zzh0812 小时前
GluserFS笔记
笔记
小饕2 小时前
RAG学习之- RAG 数据导入完整指南
人工智能·python·学习
cyr___2 小时前
Unity教程(二十六)技能系统 黑洞技能(上)基础实现
学习·游戏·unity·游戏引擎
星幻元宇VR2 小时前
VR党建蛋椅|以沉浸式体验推动党建学习方式创新
科技·学习·安全·vr·虚拟现实
Cdlblbq3 小时前
搜索会员中心 创作中心Vue2项目一键打包成桌面应用
前端·javascript·vue.js·electron
大学生小郑3 小时前
如何定义图像质量,如何评价图像质量
图像处理·学习·音视频·视频
三品吉他手会点灯3 小时前
C语言学习笔记 - 9.C概述 - 常见问题答疑
c语言·笔记·学习