详解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 相关文章推荐
开发插件的两个方法jquery.fn.extend与jquery.extend
Nov 21 Javascript
DIV始终居中的js代码
Feb 17 Javascript
SuperSlide标签切换、焦点图多种组合插件
Mar 14 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
Nov 04 Javascript
微信小程序 devtool隐藏的秘密
Jan 21 Javascript
js实现带简单弹性运动的导航条
Feb 22 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
Aug 31 Javascript
vue 指令之气泡提示效果的实现代码
Oct 18 Javascript
监听element-ui table滚动事件的方法
Mar 26 Javascript
React+TypeScript+webpack4多入口配置详解
Aug 08 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
Sep 16 Javascript
浅谈js数组splice删除某个元素爬坑
Oct 14 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
单位速度在实战中的运用
2020/03/04 星际争霸
php中用文本文件做数据库的实现方法
2008/03/27 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
checkbox勾选判断代码分析
2014/06/11 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
调试Python程序代码的几种方法总结
2015/04/28 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
Django多数据库的实现过程详解
2019/08/01 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
如何基于Python实现数字类型转换
2020/02/07 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
Python实现SMTP邮件发送
2020/06/16 Python
Pycharm中如何关掉python console
2020/10/27 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
应届生幼儿园求职信
2013/11/12 职场文书
成品仓管员工作职责
2013/12/29 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
十岁生日答谢词
2015/01/05 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL