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 相关文章推荐
Ajax一统天下之Dojo整合篇
Mar 24 Javascript
代码精简的可以实现元素圆角的js函数
Jul 21 Javascript
用js实现的自定义的对话框的实现代码
Mar 21 Javascript
使用jquery实现div的tab切换实例代码
May 27 Javascript
Javascript 按位左移运算符使用介绍(
Feb 04 Javascript
jQuery选择器源码解读(八):addCombinator函数
Mar 31 Javascript
第六篇Bootstrap表格样式介绍
Jun 21 Javascript
node.js爬取中关村的在线电瓶车信息
Nov 13 Javascript
详解如何为你的angular app构建一个第三方库
Dec 07 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
Apr 17 Javascript
微信小程序中weui用法解析
Oct 21 Javascript
微信小程序保持session会话的方法
Mar 20 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
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
python扫描线填充算法详解
2020/02/19 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
年度考核自我鉴定
2014/02/02 职场文书
空乘英文求职信
2014/04/13 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
优秀护士演讲稿
2014/04/30 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
离婚代理词范文
2015/05/23 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL