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 相关文章推荐
在JavaScript中监听IME键盘输入事件
May 29 Javascript
javascript面向对象编程代码
Dec 19 Javascript
js 操作select和option常用代码整理
Dec 13 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
Aug 22 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
javascript关于运动的各种问题经典总结
Apr 27 Javascript
javascript实现tab切换的四种方法
Nov 05 Javascript
javascript设计模式之module(模块)模式
Aug 19 Javascript
AngularJS入门教程之表单校验用法示例
Nov 02 Javascript
基于jQuery实现的单行公告活动轮播效果
Aug 23 jQuery
关于自定义Egg.js的请求级别日志详解
Dec 12 Javascript
浅析JavaScript 函数柯里化
Sep 08 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 编写的日历
2006/10/09 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
为JavaScript添加重载函数的辅助方法
2010/07/04 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
js实现图片实时时钟
2020/01/15 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
pandas实现选取特定索引的行
2018/04/20 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
Python网页解析器使用实例详解
2020/05/30 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
Python中pass的作用与使用教程
2020/11/13 Python
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
见习期自我鉴定
2013/11/07 职场文书
2014年情人节活动方案
2014/02/16 职场文书
社区文化建设方案
2014/05/02 职场文书
2014年话务员工作总结
2014/11/19 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android