详解Vue3中的基础路由和动态路由

在这里插入图片描述

本文主要介绍Vue3中的基础路由和动态路由。

目录

  • 一、基础路由
  • 二、动态路由

Vue3中的路由使用的是Vue Router库,它是一个官方提供的用于实现应用程序导航的工具。Vue Router在Vue.js的核心库上提供了路由的功能,使得我们可以在单页应用中实现页面的切换、跳转和参数传递等功能。

一、基础路由

下面是Vue3中使用Vue Router的步骤:

  1. 安装Vue Router:在命令行中运行以下命令来安装Vue Router。
npm install vue-router@next
  1. 创建路由实例:在你的Vue应用的入口文件中,创建一个Vue Router的实例。可以在src目录下创建一个router.js文件,并在其中定义路由。
import { createRouter, createWebHistory } from 'vue-router'const router = createRouter({history: createWebHistory(),routes: [{path: '/',component: Home},{path: '/about',component: About}]
})export default router

这里使用createRouter函数来创建一个路由实例,createWebHistory函数用于创建一个基于HTML5 History API的路由模式。然后定义了两个路由,分别是根路径//about,对应的组件分别是HomeAbout

  1. 在根组件中使用路由:在你的根组件(通常是App.vue)中,使用router-view组件来渲染路由对应的组件。
<template><div><router-view></router-view></div>
</template>
  1. 配置路由链接:在你的应用中需要使用到路由链接的地方,使用router-link组件来创建链接。
<template><nav><router-link to="/">Home</router-link><router-link to="/about">About</router-link></nav>
</template>

这里使用to属性来指定链接的路径。

  1. 在Vue实例中使用路由:在创建Vue实例时,将路由实例作为router选项传入。
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'createApp(App).use(router).mount('#app')

以上就是在Vue3中使用Vue Router的基本步骤。除了以上基本的使用方法之外,Vue Router还提供了许多高级功能,如动态路由、嵌套路由、路由守卫等。

二、动态路由

在Vue3中,动态路由是指根据不同的参数生成不同的路由。使用动态路由可以实现根据传入的参数渲染不同的页面或组件,从而实现根据用户选择或输入的不同内容展示不同的结果。

以下是在Vue3中使用动态路由的示例:

  1. 定义动态路由:在创建路由实例时,可以使用动态的路径参数来定义路由。
import { createRouter, createWebHistory } from 'vue-router'const router = createRouter({history: createWebHistory(),routes: [{path: '/user/:id',component: User}]
})export default router

在上面的代码中,我们使用了路径参数:id来定义动态的路由。这样,当访问/user/1时,就会匹配到该路由,并渲染对应的User组件。

  1. 在组件中接收参数:在动态路由所对应的组件中,可以通过$route对象来获取传入的参数。
<template><div>User ID: {{ $route.params.id }}</div>
</template>

在上面的代码中,我们使用了$route.params.id来获取传入的参数。在访问/user/1时,就会显示User ID: 1

  1. 更新动态路由:如果需要在同一个路由路径下根据不同的参数重新渲染组件,可以使用Vue Router提供的beforeRouteUpdate守卫。
<template><div>User ID: {{ $route.params.id }}</div>
</template><script>
export default {beforeRouteUpdate(to, from, next) {// 更新组件数据this.loadData(to.params.id)next()},methods: {loadData(id) {// 根据id加载数据// ...}}
}
</script>

在上面的代码中,我们使用beforeRouteUpdate守卫来监听路由的变化,在路由切换时调用loadData方法更新组件的数据。

通过上述步骤就可以在Vue3中使用动态路由来实现根据不同的参数生成不同的路由,并在组件中接收参数和更新数据。这样可以灵活地根据用户的输入或选择来呈现不同的内容。

在Vue3中使用动态路由时,有一些需要注意的地方:

  1. 路由定义的顺序:在定义路由时,要注意路由的顺序。动态路由的定义应该放在静态路由的后面,以确保正确匹配路由。

  2. 动态路由的参数类型:动态路由的参数可以是任意类型,但是在路由定义时需要明确指定参数的类型。例如,使用路径参数时,可以使用/user/:id来定义一个动态的id参数,但是需要注意参数类型是字符串。

  3. 监听路由变化:在动态路由所对应的组件中,可以使用beforeRouteUpdate守卫来监听路由的变化,并在路由切换时执行相应的操作。

  4. 参数传递:可以通过路径参数、查询参数、props等方式将参数传递给动态路由所对应的组件。具体的传递方式可以根据实际需求选择。

  5. 路由参数的访问:在动态路由所对应的组件中,可以通过$route.params来访问传递的路径参数,通过$route.query来访问查询参数。

  6. 动态路由的变化触发:动态路由参数的变化可能不会触发组件的重新渲染,需要手动监听参数的变化,并在变化时执行相应的操作。

以上是在Vue3中使用动态路由时需要注意的一些地方。合理地使用动态路由可以增加路由的灵活性,实现根据不同参数展示不同内容的功能。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux使用circos

1.在conda中安装bioconda conda install -c bioconda circos -y # 测试是否所有的module都安装好了 circos -module # 所有都显示OK则成功 ok 0.39 Font::TTF::Font ok 2.68 GD ok 0.2 GD::Polyline ... .... 2.检查模块是否齐全 circos -module 3.下…

记一次若依ruoyi-ui(Vue2) 关闭tab页并打开新页面

网上教程很多&#xff0c;但是都是给前端代码段&#xff0c;都不知道怎么使用&#xff08;本人菜鸟一个&#xff09;&#xff0c;今天记一次完整的&#xff1a; 在你需要关闭的tab页面&#xff0c;加入以下代码&#xff1a; handleCommit()是我需要关闭页面的方法&#xff0c…

DDD领域驱动设计系列-原理篇-战术设计

概述 上篇战略设计产出了领域及问题域领域模型&#xff1b;详见&#xff1a;DDD领域驱动设计系列-原理篇-战略设计-CSDN博客 战术设计篇聚焦如何落地&#xff0c;包含实际解决方案模型落地&#xff0c;架构分层&#xff08;Clean&#xff0c;CQRS&#xff09;&#xff0c;Rep…

MacOS+Homebrew+iTerm2+oh my zsh+powerlevel10k美化教程

MacOS终端 你是否已厌倦了MacOS终端的大黑屏&#xff1f; 你是否对这种美观的终端抱有兴趣&#xff1f; 那么&#xff0c;接下来我将会教你用最简单的方式来搭建一套自己的终端。 Homebrew的安装 官网地址&#xff1a;Homebrew — The Missing Package Manager for macOS (o…

为什么要使用vite

vue ——&#xff09;webpack 全部读取完毕才显示&#xff1a; vite:只读取修改的部分&#xff0c;速度比较快

3.java——继承及拓展(保姆级别教程,万字解析,匠心制作)

三.继承——节省了共有属性和方法的代码&#xff1a;语法 class Student extends Person 1.继承基础 1.继承首先是面向对象中非常强的一种机制&#xff0c;他首先可以复用代码&#xff08;name ,age&#xff09;&#xff0c;让我们的获得了Person全部功能和属性&#xff0c;只…

分而治之:Fork/Join框架(构造一个1到200 000求和的任务)

Fork一词的原始含义是吃饭用的叉子&#xff0c;也有分叉的意思。在linux平台中&#xff0c; 方法fork用来创建子进程。使得系统进程可以多一个执行分组。 而join方法这里表示等待&#xff0c;也就是使用fork方法后系统多了一个执行分支(线程) 所以需要等待这个执行分支执行完毕…

实习课知识整理3:首页商品列表的展示

对于一个购物商城的项目&#xff0c;主体还得是商品&#xff0c;这篇博客主要介绍如何将数据库中的信息渲染到页面上&#xff0c;这边后端是SpringBoot,前端是html配合thymeleaf模板 1. 编写查询数据库的方法 在这边我在页面上需要两部分的信息&#xff0c;一个是所有的商品&am…

vue前端上传图片到阿里云OSS,超详细上传图片与视频教程

vue前端直传图片与视频到阿里云OSS 1. 简介与日常使用2. 为什么要这么干&#xff1f;是因为我司后端不行吗&#xff1f;&#xff1f;&#xff1f;&#xff08;确实&#xff01;&#xff09;3. vue前端直传的操作4. 如何上传到阿里OSS指定文件夹呢? 1. 简介与日常使用 阿里云…

html5实现最智能大气的公司年会抽奖(源码)

文章目录 1.设计来源1.1 主界面1.3 数据配置1.4 抽奖效果1.5 中奖效果 2.效果和源码配置2.1 动态效果2.2 员工信息配置2.3 奖品信息配置2.4 抽奖音效配置2.5 源代码2.6 项目结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/…

Python字符串处理全攻略(三):常用内置方法轻松掌握

目录 引言Python字符串常用内置方法str.index()功能介绍语法注意事项总结 str.startswith()功能介绍语法示例注意事项 str.expandtabs()功能介绍语法示例注意事项总结 str.splitlines()功能介绍语法示例注意事项总结 str.swapcase()功能介绍语法示例注意事项 结束语 引言 欢迎…

Python数据分析 Matplotlib篇 基本方法初识 (第1讲)

Python数据分析 Matplotlib篇(第1讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…