vue-router 2.0 跳转之router.push()用法说明


Posted in Javascript onAugust 12, 2020

router.push(location)

除了使用 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现。

router.push(location)

想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。

当你点击 <router-link> 时,这个方法会在内部调用,所以说,点击 等同于调用 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});

补充知识:解决从登录页通过this.$router.push跳转首页后 点返回健路由变而页面不变的问题

做H5项目的时候遇到一个问题,我从 login 登录页通过 this.$router.push({ name: 'home' })路由登录成功后跳转到首页,但在ios系统下,会有一个默认返回条,点击返回键出现以下情况,路由显示的是回到登录页,而页面却还是首页。

解决思路:

开始我试着把push改为replace,但是发现并没什么卵用,还是会出现问题,所以只好用路由导航守卫去监听。

在首页加入beforeRouteLeave,监听到to.name如果是login的话就不跳转,否则就跳转,然后问题就解决了。

beforeRouteLeave (to, from, next) {
  if (to.name === 'login') {
    next(false)// 不跳转
  } else {
    next() // 跳转到另一个路由
  }
}

vue-router 2.0 跳转之router.push()用法说明

以上这篇vue-router 2.0 跳转之router.push()用法说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
Feb 22 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
Apr 17 Javascript
javascript中简单的进制转换代码实例
Oct 26 Javascript
用JS将搜索的关键字高亮显示实现代码
Nov 08 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
Jul 01 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
Dec 27 Javascript
Vue computed计算属性的使用方法
Jul 14 Javascript
JavaScript中数组常见操作技巧
Sep 01 Javascript
微信小程序视图template模板引用的实例详解
Sep 20 Javascript
JS实现将二维数组转为json格式字符串操作示例
Jul 12 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 Javascript
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
Aug 12 #Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
Aug 13 #Javascript
VsCode里的Vue模板的实现
Aug 12 #Javascript
typescript配置alias的详细步骤
Aug 12 #Javascript
js实现表格单列按字母排序
Aug 12 #Javascript
javascript的hashCode函数实现代码小结
Aug 11 #Javascript
vue axios封装httpjs,接口公用配置拦截操作
Aug 11 #Javascript
You might like
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
SVG描边动画
2017/02/23 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
原生js实现随机点名
2020/07/05 Javascript
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
Python理解递归的方法总结
2019/01/28 Python
python变量命名的7条建议
2019/07/04 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
美容院营销方案
2014/03/05 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书