百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

小白都看得懂的Vue3.0语法教程-02-路由监听

ztj100 2025-04-06 00:41 17 浏览 0 评论

麦子哥教Vue3.0-路由监听


代码开发

  1. router路由设置

在 src下建立一个文件夹router 在router下建立index.js

import { createRouter, createWebHistory } from 'vue-router'
import HelloWorld from '../components/HelloWorld.vue'
const routerHistory = createWebHistory()
const router = createRouter({
  history: routerHistory,
  routes: [
    {
        path: '/',
        name: 'Home',
        component: () => import('../components/Home.vue')
      },
      {
        path: '/h',
        component: HelloWorld
      },
  ]
})
 
export default router;

路由基础

由于我们在main.js中注册了app.use(router)

所以我们访问当前路由

//当前路径实体
this.$route 
//查询当前路径
this.$route.path
//替换当前路径,历史不会记录
this.$route.replace('/user/login')
//路由跳转,历史会记录,可以返回上一级
this.$route.push('/user/login')
//路由跳转带参数,结果是 /register?plan=private
this.$route.push({ path: '/register', query: { plan: 'private' } })
//路由到锚点,结果是 /about#team
this.$route.push({ path: '/about', hash: '#team' })

//终极杀器
window.history.go(n)

路由嵌套

这里的 是一个顶层的 router-view。它渲染顶层路由匹配的组件。同样地,一个被渲染的组件也可以包含自己嵌套的 `。`


比如我们想让其他组件显示在user组件中怎么实现呢?

const User = {
  template: `
    

User {{ $route.params.id }}

`, }

要将组件渲染到这个嵌套的 router-view 中,我们需要在路由中配置 children:

const routes = [
  {
    path: '/user/:id',
    component: User,
    children: [
      {
        // 当 /user/:id/profile 匹配成功
        // UserProfile 将被渲染到 User 的  内部
        path: 'profile',
        component: UserProfile,
      },
      {
        // 当 /user/:id/posts 匹配成功
        // UserPosts 将被渲染到 User 的  内部
        path: 'posts',
        component: UserPosts,
      },
    ],
  },
]


路由监听

注意:路由监听一般放在created方法里面

$watch监听路由变化

//$watch监听路由变化
this.$watch(()=>this.$route.path,(to,from)=>{
console.log("路由发生变化:",to,from);
});
//输出结果:路由发生变化: /pc/lib/user/add /pc/lib/user/update

watch函数监听路由参数变化

watch:{
  $route(to,from){
    console.log("路由发生变化:",to,from);
  }
},

路由缓存问题

当vue多个路径共用一个组件的时候,组件不会重新创建,也就是组件的生命周期不会被重新调用,当页面a切换到c时,在切换的过程中,vue会判断下一个路由的组件是否和当前的路由组件一样,如果一样,就直接复用,因此不会执行destroy等生命周期函数。

问题:当新增和修改共用一个组件的时候,组件的数据会重复使用,导致数据混乱,而且声明周期函数无法调用执行

组件导航守卫监听

组件导航守卫监听
  beforeRouteEnter (to, from) {
    // 在渲染该组件的对应路由被验证前调用
    // 不!能!获取组件实例 `this`
    // 因为当钩子执行前,组件实例还没被创建
    console.log("beforeRouteEnter...",from,to);
    return true;
  },
  //这个函数目前没有研究到使用方式
  beforeRouteUpdate (to, from) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
    console.log("beforeRouteUpdate...",from,to);
    return true;
  },
  beforeRouteLeave (to, from) {
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
    console.log("beforeRouteLeave...",from,to);
    return true;
  },

相关推荐

人生苦短,我要在VSCode里面用Python

轻沉发自浅度寺量子位出品|公众号QbitAI在程序员圈子里,VisualStudioCode(以下简称VSCode)可以说是目前最火的代码编辑器之一了。它是微软出品的一款可扩展的轻量...

亲测可用:Pycharm2019.3专业版永久激活教程

概述随着2020年的到来,又有一批Pycharm的激活码到期了,各位同仁估计也是在到处搜索激活方案,在这里,笔者为大家收录了一个永久激活的方案,亲测可用,欢迎下载尝试:免责声明本项目只做个人学习研究之...

Python新手入门很简单(python教程入门)

我之前学习python走过很多的歧途,自学永远都是瞎猫碰死耗子一样,毫无头绪。后来心里一直都有一个做头条知识分享的梦,希望自己能够帮助曾经类似自己的人,于是我来了,每天更新5篇Python文章,喜欢的...

Pycharm的设置和基本使用(pycharm运行设置)

这篇文章,主要是针对刚开始学习python语言,不怎么会使用pycharm的童鞋们;我来带领大家详细了解下pycharm页面及常用的一些功能,让大家能通过此篇文章能快速的开始编写python代码。一...

依旧是25年最拔尖的PyTorch实用教程!堪比付费级内容!

我真的想知道作者到底咋把PyTorch教程整得这么牛的啊?明明在内容上已经足以成为付费教材了,但作者偏要免费开源给大家学习!...

手把手教你 在Pytorch框架上部署和测试关键点人脸检测项目DBFace

这期教向大家介绍仅仅1.3M的轻量级高精度的关键点人脸检测模型DBFace,并手把手教你如何在自己的电脑端进行部署和测试运行,运行时bug解决。01.前言前段时间DBFace人脸检测库横空出世,...

进入Python的世界02外篇-Pycharm配置Pyqt6

为什么这样配置,要开发带UI的python也只能这样了,安装过程如下:一安装工具打开终端:pipinstallPyQt6PyQt6-tools二打开设置并汉化点击plugin,安装汉化插件,...

vs code如何配置使用Anaconda(vscode调用anaconda库)

上一篇文章中(Anaconda使用完全指南),我们能介绍了Anaconda的安装和使用,以及如何在pycharm中配置Anaconda。本篇,将继续介绍在vscode中配置conda...

pycharm中conda解释器无法配置(pycharm配置anaconda解释器)

之前用的好好的pycharm正常配置解释器突然不能用了?可以显示有这个环境然后确认后可以conda正在配置解释器,但是进度条结束后还是不成功!!试过了pycharm重启,pycharm重装,anaco...

Volta:跨平台开发者的福音,统一前端js工具链从未如此简单!

我们都知道现在已经进入了Rust时代,不仅很多终端常用的工具都被rust重写了,而且现在很多前端工具也开始被Rust接手了,这不,现在就出现了一款JS工具管理工具,有了它,你可以管理多版本的js工具,...

开发者的福音,ElectronEgg: 新一代桌面应用开发框架

今天给大家介绍一个开源项目electron-egg。如果你是一个JS的前端开发人员,以前面对这项任务桌面应用开发在时,可能会感到无从下手,甚至觉得这是一项困难的挑战。ElectronEgg的出现,它能...

超强经得起考验的低代码开发平台Frappe

#挑战30天在头条写日记#开始进行管理软件的开发来讲,如果从头做起不是不可以,但选择一款免费的且经得起时间考验的低代码开发平台是非常有必要的,将大幅提升代码的质量、加快开发的效率、以及提高程序的扩展性...

一文带你搞懂Vue3 底层源码(vue3核心源码解析)

作者:妹红大大转发链接:https://mp.weixin.qq.com/s/D_PRIMAD6i225Pn-a_lzPA前言vue3出来有一段时间了。今天正式开始记录一下梗vue3.0.0-be...

Windows 11 + WSL2 打造轻量级 Linux 本地开发环境实战教程

一、前言...

基于小程序 DSL(微信、支付宝)的,可扩展的多端研发框架

Mor(发音为/mr/,类似more),是饿了么开发的一款基于小程序DSL的,可扩展的多端研发框架,使用小程序原生DSL构建,使用者只需书写一套(微信或支付宝)小程序,就可以通过Mor...

取消回复欢迎 发表评论: