博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue 项目 路由 router.push、 router.replace 和 router.go
阅读量:4981 次
发布时间:2019-06-12

本文共 1858 字,大约阅读时间需要 6 分钟。

编程式的导航

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

router.push(location, onComplete?, onAbort?)

注意:在 Vue 实例内部,你可以通过 $router 访问路由实例。因此你可以调用 this.$router.push

想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。

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

该方法的参数可以是一个字符串路径,或者一个描述地址的对象。例如:

// 字符串router.push('home')// 对象router.push({ path: 'home' })// 命名的路由router.push({ name: 'user', params: { userId: 123 }})// 带查询参数,变成 /register?plan=privaterouter.push({ path: 'register', query: { plan: 'private' }})

注意:如果提供了 pathparams 会被忽略,上述例子中的 query 并不属于这种情况。取而代之的是下面例子的做法,你需要提供路由的 name 或手写完整的带有参数的 path

const userId = 123router.push({ name: 'user', params: { userId }}) // -> /user/123router.push({ path: `/user/${userId}` }) // -> /user/123// 这里的 params 不生效router.push({ path: '/user', params: { userId }}) // -> /user

同样的规则也适用于 router-link 组件的 to 属性。

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

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

router.replace(location, onComplete?, onAbort?)

跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。

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 API 的。

因此,如果你已经熟悉 ,那么在 vue-router 中操作 history 就是超级简单的。

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

摘自:

转载于:https://www.cnblogs.com/handsome-jm/p/8488217.html

你可能感兴趣的文章
Java IO流
查看>>
rabbitmq 安装
查看>>
Custom partition assignment and migration kafka集群扩充迁移指定partition
查看>>
C算法--指针与数组
查看>>
SQL语句中的N'xxxx'意思-如N'string'
查看>>
Object-c Runtime 从代码到代码
查看>>
unity导出apk错误出错解决方法
查看>>
MySQL 5.7.21版本sql_mode=only_full_group_by问题
查看>>
Codeforces Round #576 (Div. 2) 题解
查看>>
对偶问题复习要点整理
查看>>
使用OFBIZ 时,使用的键入提示。
查看>>
实习记录1
查看>>
2018-2019-2 网络对抗技术 20165305 Exp 8 Web基础
查看>>
用XPath查找HTML节点或元素
查看>>
Oracle统计、分析和优化环境配置
查看>>
指向函数的指针
查看>>
Ant步步为营(1)解压本地的zip包
查看>>
低版本的linux系统装samba服务器
查看>>
设计模式的
查看>>
关于MySql数据库设计表与查询耗时分析
查看>>