详解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 相关文章推荐
jtable列中自定义button示例代码
Nov 21 Javascript
AngularJS入门教程(二):AngularJS模板
Dec 06 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
Jun 05 Javascript
IE8兼容Jquery.validate.js的问题
Dec 01 Javascript
使用ionic切换页面卡顿的解决方法
Dec 16 Javascript
基于javaScript的this指向总结
Jul 22 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
Sep 30 Javascript
layui-laydate时间日历控件使用方法详解
Nov 15 Javascript
浅谈Fetch 数据交互方式
Dec 20 Javascript
JavaScript经典案例之简易计算器
Aug 24 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
PHP json_decode函数详细解析
2014/02/17 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
图片完美缩放
2006/09/07 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
Python中的生成器和yield详细介绍
2015/01/09 Python
python自定义异常实例详解
2017/07/11 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
np.dot()函数的用法详解
2020/01/17 Python
python实现五子棋程序
2020/04/24 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
Ruby如何创建一个线程
2013/03/10 面试题
汽车专业毕业生自荐信
2013/11/03 职场文书
建筑横幅标语
2014/10/09 职场文书
销售员自我评价
2015/03/11 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
英镑符号 £
2022/02/17 杂记
JS setTimeout与setInterval的区别
2022/04/20 Javascript