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


Posted in Javascript onAugust 12, 2020

router.push(location)

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

router.push(location)

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

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

声明式:<router-link :to="...">

编程式:router.push(...)

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

// 字符串
router.push('home')

// 对象
this.$router.push({path: '/login?url=' + this.$route.path});

// 命名的路由
router.push({ name: 'user', params: { userId: 123 }})

// 带查询参数,变成/backend/order?selected=2
this.$router.push({path: '/backend/order', query: {selected: "2"}});

// 设置查询参数
this.$http.post('v1/user/select-stage', {stage: stage})
   .then(({data: {code, content}}) => {
      if (code === 0) {
        // 对象
        this.$router.push({path: '/home'});
      }else if(code === 10){
        // 带查询参数,变成/login?stage=stage
        this.$router.push({path: '/login', query:{stage: stage}});
      }
});

// 设计查询参数对象
let queryData = {};
if (this.$route.query.stage) {
  queryData.stage = this.$route.query.stage;
}
if (this.$route.query.url) {
  queryData.url = this.$route.query.url;
}
this.$router.push({path: '/my/profile', query: queryData});

replace

类型: boolean

默认值: false

设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),于是导航后不会留下 history 记录。即使点击返回按钮也不会回到这个页面。

//加上replace: true后,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。

this.$router.push({path: '/home', replace: true})
//如果是声明式就是像下面这样写:
<router-link :to="..." replace></router-link>
// 编程式:
router.replace(...)

综合案例

this.$router.push({path: '/coach/' + this.$route.params.id, query: queryData});

补充知识:解决从登录页通过this.$router.push跳转首页后 点返回健路由变而页面不变的问题

做H5项目的时候遇到一个问题,我从 login 登录页通过 this.$router.push({ name: 'home' })路由登录成功后跳转到首页,但在ios系统下,会有一个默认返回条,点击返回键出现以下情况,路由显示的是回到登录页,而页面却还是首页。

解决思路:

开始我试着把push改为replace,但是发现并没什么卵用,还是会出现问题,所以只好用路由导航守卫去监听。

在首页加入beforeRouteLeave,监听到to.name如果是login的话就不跳转,否则就跳转,然后问题就解决了。

beforeRouteLeave (to, from, next) {
  if (to.name === 'login') {
    next(false)// 不跳转
  } else {
    next() // 跳转到另一个路由
  }
}

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

以上这篇vue-router 2.0 跳转之router.push()用法说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery点击后一组图片左右滑动的实现代码
Aug 16 Javascript
ko knockoutjs动态属性绑定技巧应用
Nov 14 Javascript
jquery鼠标停止移动事件
Dec 21 Javascript
JS记录用户登录次数实现代码
Jan 15 Javascript
AngularJS中的模块详解
Jan 29 Javascript
Node.js中使用socket创建私聊和公聊聊天室
Nov 19 Javascript
jQuery中$.each()函数的用法引申实例
May 12 Javascript
AngularJs 动态加载模块和依赖
Sep 15 Javascript
bootstrapValidator 重新启用提交按钮的方法
Feb 20 Javascript
vue调用高德地图实例代码
Apr 28 Javascript
a标签调用js的方法总结
Sep 05 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
Oct 27 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
Aug 12 #Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
Aug 13 #Javascript
VsCode里的Vue模板的实现
Aug 12 #Javascript
typescript配置alias的详细步骤
Aug 12 #Javascript
js实现表格单列按字母排序
Aug 12 #Javascript
javascript的hashCode函数实现代码小结
Aug 11 #Javascript
vue axios封装httpjs,接口公用配置拦截操作
Aug 11 #Javascript
You might like
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
Jquery实现页面加载时弹出对话框代码
2013/04/19 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
angular多语言配置详解
2019/05/16 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
关于Python数据结构中字典的心得
2017/12/04 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
python实现支付宝转账接口
2019/05/07 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
美国高街时尚品牌:OASAP
2016/07/24 全球购物
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
大学在校生求职信范文
2013/11/21 职场文书
三年级音乐教学反思
2014/01/28 职场文书
亮化工程实施方案
2014/03/17 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
2014年党总支工作总结
2014/12/18 职场文书
学期个人工作总结
2015/02/13 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
Android 中的类文件和类加载器详情
2022/06/05 Java/Android