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中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
javascript模块化是什么及其优缺点介绍
Sep 02 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
Jan 02 Javascript
JavaScript对象参数的引用传递
Jan 14 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
Nov 07 Javascript
Asp.Net之JS生成分页条的方法
Nov 23 Javascript
原生node.js案例--前后台交互
Feb 20 Javascript
JS验证input输入框(字母,数字,符号,中文)
Mar 23 Javascript
Vue-cli创建项目从单页面到多页面的方法
Sep 20 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
Dec 24 Javascript
webpack开发环境和生产环境的深入理解
Nov 08 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
May 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
php内核解析:PHP中的哈希表
2014/01/30 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
Javascript继承机制详解
2017/05/30 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
npm qs模块使用详解
2020/02/07 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
python实现给数组按片赋值的方法
2015/07/28 Python
python求最大值最小值方法总结
2019/06/25 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
执行Python程序时模块报错问题
2020/03/26 Python
python Gabor滤波器讲解
2020/10/26 Python
基于django和dropzone.js实现上传文件
2020/11/24 Python
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
外企C语言笔试题
2013/11/10 面试题
挂牌仪式主持词
2014/03/20 职场文书
我有一个梦想演讲稿
2014/05/05 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python