vue使用axios时关于this的指向问题详解


Posted in Javascript onDecember 22, 2017

前言

众所周知axios是vue-resource后出现的Vue请求数据的插件。vue更新到2.0之后,作者尤大就宣告不再对vue-resource更新,而是推荐的axios。更多的详细介绍大家可以参考这里:https://3water.com/article/109444.htm

本文主要介绍了关于vue使用axios时this的指向问题,下面话不多说了,来一起看看详细的介绍吧。

1.解决办法

在vue中使用axios做网络请求的时候,会遇到this不指向vue,而为undefined,可以使用箭头函数"=>"来解决。如下:

methods: {
 loginAction(formName) {
 this.$axios.post('http://127.0.0.1/u/subLogin', {
  username: this.username,
  password: this.password
 })
  .then(function(response){
  console.log(this); //这里 this = undefined
  })
  .catch((error)=> {
  console.log(error); //箭头函数"=>"使this指向vue
  });

 });
 }
}

2. 原因

ES6中的 箭头函数 "=>" 内部的this是词法作用域,由上下文确定(也就是由外层调用者vue来确定)。

3. 题外话

使用"=>"函数,就可以告别之前的两种写法了:

bind(this)来改变匿名函数的this指向

hack写法 var _this= this;

loginAction(formName) {
 var _this= this;
 this.$axios.post("...")
 .then(function(response){
  console.log(_this); //这里 _this 指向vue
 })
 });
 }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript版DateAdd和DateDiff函数代码
Mar 01 Javascript
jQuery 快速结束当前正在执行的动画
Nov 20 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
Dec 04 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
Jan 15 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
bootstrap-table实现服务器分页的示例 (spring 后台)
Sep 01 Javascript
JavaScript之实现一个简单的Vue示例
Jan 17 Javascript
Vue表单之v-model绑定下拉列表功能
May 14 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
May 27 jQuery
JS实现普通轮播图特效
Jan 01 Javascript
原生js滑动轮播封装
Jul 31 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 #Javascript
vue init失败简单解决方法(终极版)
Dec 22 #Javascript
使用axios实现上传图片进度条功能
Dec 21 #Javascript
详解使用webpack构建多页面应用
Dec 21 #Javascript
使用ajax的post同步执行(实现方法)
Dec 21 #Javascript
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 #jQuery
原生js+cookie实现购物车功能的方法分析
Dec 21 #Javascript
You might like
php SQL Injection with MySQL
2011/02/27 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
浅谈json_encode用法
2015/03/05 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
四个PHP非常实用的功能
2015/09/29 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
浅谈php://filter的妙用
2019/03/05 PHP
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
Android分包MultiDex策略详解
2017/10/30 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
keras topN显示,自编写代码案例
2020/07/03 Python
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
大学生活学习的自我评价
2013/12/03 职场文书
生物科学专业个人求职信范文
2013/12/07 职场文书
空气环保标语
2014/06/12 职场文书
小学总务工作总结
2015/08/13 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
Python序列化与反序列化相关知识总结
2021/06/08 Python
德劲DE1102数字调谐收音机机评
2022/04/07 无线电