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

【Vue3】Vue3中的编程式路由导航 重点!!!

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!
请添加图片描述

文章目录

  • 🍀Vue3 编程式路由导航指南
  • 🍀何为编程式路由导航
  • 🍀实现编程式导航
  • 🍀Vue2、3的编程式路由导航的对比
  • 🍀总结

🍀Vue3 编程式路由导航指南

Vue Router 是 Vue.js 官方的路由管理器,它与 Vue.js 核心深度集成,让构建单页面应用变得轻而易举。在 Vue3 中,我们依然可以使用 Vue Router 来管理路由,并且 Vue3 中引入的 Composition API 为编程式路由导航带来了全新的可能性


🍀何为编程式路由导航

编程式路由导航是通过代码来实现页面跳转的一种方式,与使用 组件进行声明式导航不同,编程式导航更加灵活,可以在任何地方触发,适用于诸如按钮点击、表单提交等场景


🍀实现编程式导航

目前为止,我们的导航区都是使用RouteLink编写的,但是我们使用RouteLink编写的代码,最后在浏览器中展示的都是a标签
在这里插入图片描述

  • 首先是语义问题:a标签通常是超链接,可能会让用户产生一些大大小小的误会
  • SEO问题:a标签可能会被搜索引擎误以为是外部链接,这可能会影响到页面的搜索引擎优化效果
  • 无障碍问题:对于使用辅助技术的用户(如屏幕阅读器用户),他们可能会期望 标签是可以跳转到其他页面的链接,而这种误导可能会影响到他们的使用体验

接下来我们实现一个需求,点击首页2秒后,我们要跳到娱乐,我们按照之前的思路,我们或许就要写RouterLink了

<script setup lang="ts" name="Home">import { onMounted } from 'vue'onMounted(()=>{setTimeout(()=>{<RouterLink>},2000)})
</script>

因为RouterLink要写在模版里面,所以使用RouterLink是不可行的,如果我们非得实现跳转,我们就需要本节的编程式导航了
老样子我们引入必要的组件useRouter

    import { useRouter } from 'vue-router'

之后我们在setTimeout来实现跳转

 const router = useRouter()onMounted(()=>{setTimeout(()=>{router.push('/plays')},2000)})

运行界面如下
请添加图片描述
所以说编程式路由导航的使用场景还是十分方便的


接下来我们继续做一个小案例,需求的在英雄左边添加四个button,点击button后可以显示详细信息,和点击名字出现的效果是一样的

<button @click="showPlayDetail(play)">查看英雄</button>

添加完了模版(这里别忘了加(play)),我们需要导入useRouter
之后我们就可push了,但是push里面怎么写,我们可以参考RouterLink中的to的写法

  const router = useRouter()function showPlayDetail(play){router.push({name:'Detail',query:{id:play.id,title:play.title,content:play.content}})}

这里我们会产生一个报错
在这里插入图片描述
如果想解决可以使用两种方式,第一种直接在play后面加上:any就可以了
另外一种就是定义一个接口

interface PlayInter{id:string,title:string,content:string
}

🍀Vue2、3的编程式路由导航的对比

Vue2 和 Vue3 中的编程式路由导航在使用方式上有一些区别,这主要是因为 Vue3 引入了 Composition API,以及对内部 API 进行了一些改变。下面是两者之间的主要区别:

  • 引入方式:
    Vue2:在 Vue2 中,你可以通过 this.$router 来访问路由器,从而进行编程式路由导航。
    Vue3:在 Vue3 中,你需要使用 router 提供的方法来进行编程式路由导航,通常是通过 import { useRoute, useRouter } from ‘vue-router’ 引入。

  • 使用方式:
    Vue2:在 Vue2 中,你可以直接使用 this. r o u t e r . p u s h 、 t h i s . router.push、this. router.pushthis.router.replace 等方法进行路由导航。
    Vue3:在 Vue3 中,你可以通过 router.push、router.replace 等方法来进行路由导航,不需要通过 this.$router 访问。

  • Composition API:
    Vue2:Vue2 中没有 Composition API,如果你想在方法中使用路由导航,通常需要将方法定义在 methods 中,并使用 this 来访问路由器。
    Vue3:在 Vue3 中,你可以在 setup 函数中直接使用 router 对象来进行路由导航,更加灵活方便

综上所述:还是Vue3更加方便一些

🍀总结

通过以上介绍,我们了解了在 Vue3 中如何实现编程式路由导航。编程式路由导航是 Vue.js 开发中常用的技巧之一,能够帮助我们更灵活地控制页面跳转,提升用户体验~~~

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

相关文章:

  • Java项目利用Redisson实现真正生产可用高并发秒杀功能 支持分布式高并发秒杀
  • Alma Linux - Primavera P6 EPPM 安装及分享
  • C++程序设计-练手题集合【期末复习|考研复习】
  • PHP 服务实现监控可观测性最佳实践
  • 性能测试 —— 数据准备与基准场景设计!
  • LAMP架构部署--yum安装方式
  • node核心模块之Process
  • GPT能复制人类的决策和直觉吗?
  • C语言---指针的两个运算符:点和箭头
  • 价值学习和策略学习的区别
  • 15届蓝桥杯备赛(2)
  • mongoDB7.0.6版安装与使用(最新版踩坑记录)
  • 蓝桥杯--全球气温变暖
  • unraid docker.img扩容
  • Oracle中的commit与rollback
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 4个实用的微服务测试策略
  • mysql 5.6 原生Online DDL解析
  • 缓存与缓冲
  • 今年的LC3大会没了?
  • 前端面试题总结
  • 使用common-codec进行md5加密
  • 一个项目push到多个远程Git仓库
  • 智能网联汽车信息安全
  • 自定义函数
  • 1.Ext JS 建立web开发工程
  • MPAndroidChart 教程:Y轴 YAxis
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​批处理文件中的errorlevel用法
  • (1)(1.11) SiK Radio v2(一)
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (145)光线追踪距离场柔和阴影
  • (LeetCode 49)Anagrams
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (十六)Flask之蓝图
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)http-server应用
  • (转)ObjectiveC 深浅拷贝学习
  • **CI中自动类加载的用法总结
  • *2 echo、printf、mkdir命令的应用
  • .md即markdown文件的基本常用编写语法
  • .mysql secret在哪_MySQL如何使用索引
  • .Net FrameWork总结
  • .NET 设计一套高性能的弱事件机制
  • .net 生成二级域名
  • .NET/C# 的字符串暂存池
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .NET正则基础之——正则委托
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • @Query中countQuery的介绍
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [flask] flask的基本介绍、flask快速搭建项目并运行