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学习笔记之 对象篇(三) : hasOwnProperty
Jun 24 Javascript
jQuery自适应轮播图插件Swiper用法示例
Aug 24 Javascript
轻松实现js弹框显示选项
Sep 13 Javascript
深入理解Vue transition源码分析
Jul 30 Javascript
使用cropper.js裁剪头像的实例代码
Sep 29 Javascript
vue项目常用组件和框架结构介绍
Dec 24 Javascript
你点的 ES6一些小技巧,请查收
Apr 25 Javascript
vue cli2.0单页面title修改方法
Jun 07 Javascript
VUE 全局变量的几种实现方式
Aug 22 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
Sep 13 Javascript
微信小程序之高德地图多点路线规划过程示例详解
Jan 18 Javascript
JavaScript WeakMap使用详解
Feb 05 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中最容易忘记的一些知识点总结
2013/04/28 PHP
关于svn冲突的解决方法
2013/06/21 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
js运动应用实例解析
2015/12/28 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
工厂搬迁方案
2014/05/11 职场文书
升职演讲稿范文
2014/05/23 职场文书
工地安全生产标语
2014/06/06 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python