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 相关文章推荐
添加到收藏夹代码(兼容几乎所有的浏览器)
Jan 09 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
Feb 26 Javascript
jQuery中innerWidth()方法用法实例
Jan 19 Javascript
浅析Node.js中的内存泄漏问题
Jun 23 Javascript
Jquery和JS获取ul中li标签的实现方法
Jun 02 Javascript
jQuery Validate插件实现表单验证
Aug 19 Javascript
Three.js如何实现雾化效果示例代码
Sep 27 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
Sep 12 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
Nov 26 Javascript
vue 实现移动端键盘搜索事件监听
Nov 06 Javascript
微信小程序通过websocket实时语音识别的实现代码
Aug 19 Javascript
JS绘图Flot如何实现可选显示曲线图功能
Oct 16 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
2006/10/09 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
python开发之文件操作用法实例
2015/11/13 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
Python模块相关知识点小结
2020/03/09 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
python 字符串格式化的示例
2020/09/21 Python
python import 上级目录的导入
2020/11/03 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
师德建设实施方案
2014/03/21 职场文书
小组名称和口号
2014/06/09 职场文书
预备党员个人总结
2015/02/14 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
分析并发编程之LongAdder原理
2021/06/29 Java/Android