详解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中计算网页中某个元素的位置
Jun 10 Javascript
JavaScript数据库TaffyDB用法实例分析
Jul 27 Javascript
学习JavaScript正则表达式
Nov 13 Javascript
详解JavaScript正则表达式之RegExp对象
Dec 13 Javascript
Vue.js动态组件解析
Sep 09 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
Oct 27 Javascript
完全深入学习Bootstrap表单
Nov 28 Javascript
jQuery EasyUI Draggable拖动组件
Mar 01 Javascript
Angular5.1新功能分享
Dec 21 Javascript
vue之浏览器存储方法封装实例
Mar 15 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
Oct 30 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
Jan 29 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排序算法(冒泡排序,快速排序)
2012/10/09 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
Python中使用SAX解析xml实例
2014/11/21 Python
python记录程序运行时间的三种方法
2017/07/14 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python实现简单学生信息管理系统
2020/04/09 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
女性时尚网购:Chic Me
2019/07/30 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
大一学生职业生涯规划
2014/03/11 职场文书
婚礼主持结束词
2014/03/13 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
七一建党日演讲稿
2014/09/05 职场文书
大班上学期个人总结
2015/02/13 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers
Redis唯一ID生成器的实现
2022/07/07 Redis