详解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 相关文章推荐
弹出广告特效代码(一个IP只弹出一次)
May 11 Javascript
基于jquery的网页SELECT下拉框美化代码
Oct 28 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
Dec 27 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
Mar 14 Javascript
jquery比较简洁的软键盘特效实现方法
Mar 19 Javascript
JavaScript的RequireJS库入门指南
Jul 01 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
JavaScript 数组去重并统计重复元素出现的次数实例
Dec 14 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
Jun 17 Javascript
vue分页插件的使用方法
Dec 25 Javascript
javascript canvas时钟模拟器
Jul 13 Javascript
js重写alert事件(避免alert弹框标题出现网址)
Dec 04 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版本号
2006/10/09 PHP
PHP的变量总结 新手推荐
2011/04/18 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
python getopt 参数处理小示例
2009/06/09 Python
Python守护进程用法实例分析
2015/06/04 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
槐乡的孩子教学反思
2014/04/27 职场文书
医学专业自荐信
2014/06/14 职场文书
开发房地产协议书
2014/09/14 职场文书
统计员岗位职责范本
2015/04/14 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python
MySQL优化及索引解析
2022/03/17 MySQL