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 相关文章推荐
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
Dec 02 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
Dec 25 Javascript
IE6浏览器中window.location.href无效的解决方法
Nov 20 Javascript
在HTML中插入JavaScript代码的示例
Jun 03 Javascript
深入探究AngularJS框架中Scope对象的超级教程
Jan 04 Javascript
再谈JavaScript异步编程
Jan 27 Javascript
js html css实现复选框全选与反选
Oct 09 Javascript
深入理解javascript的getTime()方法
Feb 16 Javascript
Node做中转服务器转发接口
Oct 18 Javascript
JQuery Ajax执行跨域请求数据的解决方案
Dec 10 jQuery
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
JS实现checkbox互斥(单选)功能示例
May 04 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
js Flash插入函数免激活代码
2009/03/31 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
vue实现验证用户名是否可用
2021/01/20 Vue.js
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
详解Python中find()方法的使用
2015/05/18 Python
常用python编程模板汇总
2016/02/12 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
如何写好建议书
2014/03/13 职场文书
目标责任书范本
2014/04/16 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
班级管理经验交流材料
2015/11/02 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js