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基础之查找元素的详细介绍(访问节点)
Jul 05 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
Dec 29 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
javascript制作幻灯片(360度全景图片)
Jul 28 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
Nov 02 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
Nov 24 Javascript
jQuery实现动态添加tr到table的方法
Dec 26 Javascript
JS求Number类型数组中最大元素方法
Apr 08 Javascript
JavaScript callback回调函数用法实例分析
May 08 Javascript
vue.js图片转Base64上传图片并预览的实现方法
Aug 02 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
Jul 19 Javascript
vue中实现回车键登录功能
Feb 19 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
农民C键的运用技巧
2020/03/04 星际争霸
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
动态加载js的几种方法
2006/10/23 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
python django 访问静态文件出现404或500错误
2017/01/20 Python
Python中类型检查的详细介绍
2017/02/13 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python生成带有表格的图片实例
2019/02/03 Python
python函数与方法的区别总结
2019/06/23 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
J2EE包括哪些技术
2016/11/25 面试题
教育技术学专业职业规划书
2014/03/03 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
伦敦奥运会口号
2014/06/13 职场文书
服装设计专业自荐信
2014/06/17 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
董事长年会致辞
2015/07/29 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL