详解vue-router 2.0 常用基础知识点之router.push()


Posted in Javascript onMay 10, 2017

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

router.push(location)

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

当你点击 <router-link> 时,这个方法会在内部调用,所以说,点击 <router-link :to="..."> 等同于调用 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});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一个高效的JavaScript压缩工具下载集合
Mar 06 Javascript
10个基于浏览器的JavaScript调试工具分享
Feb 07 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
Mar 20 Javascript
js实现点击图片改变页面背景图的方法
Feb 28 Javascript
简易的投票系统以及js刷票思路和方法
Apr 07 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
简单实现轮播图效果的实例
Jul 15 Javascript
js图片上传前预览功能(兼容所有浏览器)
Aug 24 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
Feb 08 Javascript
如何去除vue项目中的#及其ie9兼容性
Jan 11 Javascript
Node.js使用cookie保持登录的方法
May 11 Javascript
通过webpack引入第三方库的方法
Jul 20 Javascript
JavaScript通过filereader接口读取文件
May 10 #Javascript
关于vue-router路径计算问题
May 10 #Javascript
JavaScript使用readAsDataUrl方法预览图片
May 10 #Javascript
Bootstrap table使用方法总结
May 10 #Javascript
将angular-ui的分页组件封装成指令的方法详解
May 10 #Javascript
vue-axios使用详解
May 10 #Javascript
详解axios在vue中的简单配置与使用
May 10 #Javascript
You might like
德生PL990的分析评价
2021/03/02 无线电
PHP4(windows版本)中的COM函数
2006/10/09 PHP
ADODB的数据库封包程序库
2006/12/31 PHP
php session 检测和注销
2009/03/16 PHP
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
js获取网页高度(详细整理)
2012/12/28 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
浅析Python编写函数装饰器
2016/03/18 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
Python pymongo模块常用操作分析
2018/09/01 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
Android面试宝典
2013/08/06 面试题
机电一体化大学生求职信
2013/11/08 职场文书
取保候审保证书
2014/04/30 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
社区端午节活动总结
2015/02/11 职场文书
工作试用期自我评价
2015/03/10 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
网络妈妈观后感
2015/06/08 职场文书
重阳节座谈会主持词
2015/07/03 职场文书