详解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 相关文章推荐
用js实现的仿sohu博客更换页面风格(简单版)
Mar 22 Javascript
js获取图片大小的函数代码
Sep 20 Javascript
IE6浏览器下resize事件被执行了多次解决方法
Dec 11 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
Aug 06 Javascript
Angular.js自定义指令学习笔记实例
Feb 24 Javascript
Angular.js指令学习中一些重要属性的用法教程
May 24 Javascript
Node.js简单入门前传
Aug 21 Javascript
详解vue+css3做交互特效的方法
Nov 20 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
Sep 12 Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 Javascript
Vue中通过Vue.extend动态创建实例的方法
Aug 13 Javascript
JavaScript实现世界各地时间显示
Sep 07 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
php中利用post传递字符串重定向的实现代码
2011/04/21 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
windows下python之mysqldb模块安装方法
2017/09/07 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
Django choices下拉列表绑定实例
2020/03/13 Python
python中os包的用法
2020/06/01 Python
美国著名的团购网站:Woot
2016/08/02 全球购物
测试时代收集的软件测试面试题
2013/09/25 面试题
什么是会话Bean
2015/05/14 面试题
创建省级文明单位实施方案
2014/02/27 职场文书
初中生评语大全
2014/04/24 职场文书
党员自我剖析材料
2014/08/31 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
Python if else条件语句形式详解
2022/03/24 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python