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 AJAX POST与GET之间的区别
Nov 14 Javascript
jQuery过滤选择器经典应用
Aug 18 Javascript
AngularJS入门教程之XHR和依赖注入详解
Aug 18 Javascript
AngularJS之自定义服务详解(factory、service、provider)
Apr 14 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
Jun 01 Javascript
vue数组对象排序的实现代码
Jun 20 Javascript
JavaScript引用类型Array实例分析
Jul 24 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
Sep 10 Javascript
微信小程序如何播放腾讯视频的实现
Sep 20 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
js实现中文实时时钟
Jan 15 Javascript
js实现头像上传并且可预览提交
Dec 25 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
php数组中删除元素的实现代码
2012/06/22 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
基于jQuery的表格操作插件
2010/04/22 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
python在不同层级目录import模块的方法
2016/01/31 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
是否有自动比较结构的方法
2015/06/03 面试题
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
学年自我鉴定范文
2013/10/01 职场文书
项目专员岗位职责
2013/12/04 职场文书
小学生考试获奖感言
2014/01/30 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
创业融资计划书
2014/04/25 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
解约证明模板
2015/06/19 职场文书
学前班教学反思
2016/02/24 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
springboot读取nacos配置文件
2022/05/20 Java/Android
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers