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增删元素的代码
Feb 14 Javascript
解析Javascript中中括号“[]”的多义性
Dec 03 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
Oct 29 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
Sep 27 Javascript
一不小心就做错的JS闭包面试题
Nov 25 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
JS组件Bootstrap Select2使用方法解析
May 30 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
Sep 28 Javascript
微信小程序实现列表页的点赞和取消点赞功能
Nov 02 Javascript
其实你可以少写点if else与switch(推荐)
Jan 10 Javascript
js实现图片推拉门效果代码实例
May 18 Javascript
vue表单数据交互提交演示教程
Nov 13 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
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
extJs 下拉框联动实现代码
2010/04/09 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
python 设置文件编码格式的实现方法
2017/12/21 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Python异常处理例题整理
2019/07/07 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
擅自离岗检讨书
2014/02/11 职场文书
绩效工资实施方案
2014/03/15 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
标准毕业生自荐信
2014/06/24 职场文书
治安消防安全责任书
2014/07/23 职场文书
教书育人演讲稿
2014/09/11 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang