详解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 相关文章推荐
Prototype使用指南之base.js
Jan 10 Javascript
javascript CSS画图之基础篇
Jul 29 Javascript
jQuery UI AutoComplete 自动完成使用小记
Aug 21 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
Oct 13 Javascript
表单元素的submit()方法和onsubmit事件应用概述
Feb 01 Javascript
javascript日期操作详解(脚本之家整理)
Sep 05 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
Feb 18 Javascript
JQuery给select添加/删除节点的实现代码
Apr 26 Javascript
Vue通过input筛选数据
Oct 26 Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 10 Javascript
全面解析JavaScript Module模式
Jul 24 Javascript
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
Python中is和==的区别详解
2018/11/15 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
Python socket处理client连接过程解析
2020/03/18 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
Python如何执行系统命令
2020/09/23 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
一些Solaris面试题
2015/12/22 面试题
施工安全协议书
2013/12/11 职场文书
应聘自荐信
2013/12/14 职场文书
伊索寓言教学反思
2014/05/01 职场文书
企业理念标语
2014/06/09 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
代收款委托书范本
2014/10/01 职场文书
离婚协议书怎么写
2015/01/26 职场文书
浅析Python中的套接字编程
2021/06/22 Python
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技