`

Vue-Router通过代码进行导航

    博客分类:
  • Vue
阅读更多

原文地址: http://www.hxstrive.com/article/597.htm

 

除了使用 <router-link> 创建 a 标签来定义导航链接,我们还可以借助 JavaScript 代码通过 router 的实例方法来实现导航。

router.push(location, onComplete?, onAbort?)
在 Vue 实例内部,你可以通过 this.$router 访问路由实例。因此你可以调用 this.$router.push()。想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。


当你点击 <router-link> 时,这个方法会在内部调用,所以说,点击 <router-link :to="..."> 等同于调用 router.push(...)。

该方法的参数可以是一个字符串路径,或者一个描述地址的对象(<router-link :to="youLink"></router-link>)。例如:
//  字符串
router.push('home')
 
//  对象
router.push({ path: 'home' })
 
// 命名的路由
router.push({ name: 'user', params: { userId: '123' }})
 
// 带查询参数,变成 /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})
注意:如果提供了 path,params 会被忽略,上述例子中的 query 并不属于这种情况。取而代之的是下面例子的做法,你需要提供路由的 name 或手写完整的带有参数的 path:
const userId = '123'
 
// -> /user/123
router.push({ name: 'user', params: { userId }})
 
// -> /user/123
router.push({ path: `/user/${userId}` })
 
// 这里的 params 不生效
// -> /user
router.push({ path: '/user', params: { userId }})
同样的规则也适用于 router-link 组件的 to 属性。


在 2.2.0+,可选的在 router.push 或 router.replace 中提供 onComplete 和 onAbort 回调作为第二个和第三个参数。这些回调将会在导航成功完成 (在所有的异步钩子被解析之后) 或终止 (导航到相同的路由、或在当前导航完成之前导航到另一个不同的路由) 的时候进行相应的调用。


注意:
如果目的地和当前路由相同,只有参数发生了改变 (比如从一个用户资料到另一个 /users/1 -> /users/2),你需要使用 beforeRouteUpdate / watch 来响应这个变化 (比如抓取用户信息)。

 

router.replace(location, onComplete?, onAbort?)
跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。如:

this.$router.replace("menu")


router.go(n)
这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n)。例子:
// 在浏览器记录中前进一步,等同于 history.forward()
router.go(1)
 
// 后退一步记录,等同于 history.back()
router.go(-1)
 
// 前进 3 步记录
router.go(3)
 
// 如果 history 记录不够用,那就默默地失败呗
router.go(-100)
router.go(100)


操作 History
你也许注意到 router.push、 router.replace 和 router.go 跟 window.history.pushState、window.history.replaceState 和 window.history.go 好像, 实际上它们确实是效仿 window.history API 的。

还有值得提及的,Vue Router 的导航方法 (push、 replace、 go) 在各类路由模式 (history、 hash 和 abstract) 下表现一致。

分享到:
评论

相关推荐

    【JavaScript源代码】基于vue-router的matched实现面包屑功能.docx

    基于vue-router的matched实现面包屑功能  本文主要介绍了基于vue-router的matched实现面包屑功能,分享给大家,具体如下: 如上图所示,就是常见的面包屑效果,面包屑的内容一般来说,具有一定的层级关系,就以上...

    基于vue-cli vue-router搭建底部导航栏移动前端项目

    vue.js学习 踩坑第一步 1.首先安装vue-cli脚手架 不多赘述,主要参考 Vue 爬坑之路(一)—— 使用 vue-cli 搭建项目   2.项目呈现效果 项目呈现网址:www.zhoupeng520.cn/index.html  项目中主要用了Flex布局,...

    vue3学习10:路由基本学习(vue-router)基本使用

    vue3学习10:路由基本学习...讲解vue-router的基本使用代码,包括路由重定向,路由的嵌套,导航守卫 具体代码可以结合https://blog.csdn.net/weixin_43788986/article/details/125703550?spm=1001.2014.3001.5501来看

    vue-router 实现导航守卫(路由卫士)的实例代码

    导航守卫即是在路由跳转的时候,根据vue-router提供的导航守卫主要用来通过跳转或取消参数或查询的改变并不会出触发进入/离开的导航守卫 路由跳转前做一些验证,比如登录验证,是网站中的普遍需求。 对此,vue-route...

    vue-router 手势滑动触发返回功能

    主要介绍了vue-router 手势滑动触发返回功能,文中通过实例代码给大家介绍了vue图片左右滑动及手势缩放,需要的朋友可以参考下

    vue-router实现编程式导航的代码实例

    今天小编就为大家分享一篇关于vue-router实现编程式导航的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    vue-router传递参数的几种方式实例详解

    vue-router传递参数分为两大类,一类是编程式的导航 router.push另一类是声明式的导航 &lt;router&gt;,本文通过实例代码给大家介绍vue-router传递参数的几种方式,感兴趣的朋友跟随小编一起看看吧

    详解vue-router导航守卫

    对此,vue-router 提供的 beforeEach可以方便地实现全局导航守卫(navigation-guards)。组件内部的导航守卫函数使用相同,只是函数名称不同(beforeRouteEnter 、beforeRouteUpdate(2.2 新增) 、beforeRouteLeave)...

    vue-admin-template配置快捷导航的代码(标签导航栏)

    vue-element-admin有关快捷导航说明 1、添加标签 @/layout/components/AppMain.vue添加: &lt;section class=app-main&gt; &lt;transition name=fade-transform mode=out-in&gt; &lt;keep include=cachedViews&gt; &lt;!-- 新增 -...

    vue-router二级导航切换路由及高亮显示的实现方法

    主要给大家介绍了关于vue-router二级导航切换路由及高亮显示的实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Vue具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    Web前端框架应用:第5章 Vue路由-编程导航.pptx

    为了更方便地在项目中开发导航功能,Vue提供了编程式导航,也就是利用JavaScript代码来实现地址的跳转,通过router实例方法来实现。 5.8 编程式导航 router.push() 使用router.push()方法可以导航到不同的URL地址。...

    Web前端框架应用:第5章 Vue路由-命名路由.pptx

    vue-router提供了一种隐式的引用路径,即命名路由,可以在创建Router实例的时候,在 routes 中给某个路由设置名称name值。通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的...

    exam-student:在线考试系统(学生端)Vue.js2.5 + vue-router +元素UI + vue-cli

    项目采用Vue.js2.5 + vue-router +元素UI 开发环境使用vue-cli 项目演示地址 http: //liqianwen.remmli.com:8081/#/login 注意:演示地址并非项目真实在线地址,只是演示而已〜服务器带宽太低,所以打开较慢...请...

    vue实现侧边栏导航效果

    本文实例为大家分享了vue侧边栏导航的具体代码,供大家参考,具体内容如下 最终效果 点击下一个导航,上一个导航自动收回 实现代码 1.下载vue-router npm install vue-router --save-dev 2.在main.js中引入 ...

    vue路由案例的代码test1-test5

    了解vue-router的实现原理 掌握vue-router的基本使用 掌握命名路由、命名视图和编程式导航及query、params传参方式的方法 掌握路由对象的常用属性和动态路由的匹配及路由嵌套的方法

    vue-cli人力资源系统

    调试与测试:使用Vue开发者工具进行调试,确保代码的正确性和性能。 (二) 项目创建与配置:使用Vue-cli创建新项目,并配置好必要的依赖项,如ElementUI和ECharts。 页面布局与组件设计:利用ElementUI的组件库...

    vue-router 2.0 跳转之router.push()用法说明

    除了使用 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现。 router.push(location) 想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录...

Global site tag (gtag.js) - Google Analytics