Vue中关于axios请求的数据通过‘.then’转存报错问题

解决方案

async test() {
      await this.$axios({
        method: "post",
        url: '/home',
      }).then((value)=>{//将回调函数改用箭头函数处理
        console.log(value.data);
        this.list = value.data.data
      });
    },

问题解析

报错内容

uncaught (in promise) TypeError: Cannot set properties of undefined (setting 'concat_list')

问题源码

async test() {
      await this.$axios({
        method: "post",
        url: '/home',
      }).then(function(value){
        console.log(value.data);
        this.list = value.data.data
      });
    },

即服务器返回的数据无法通过this指向进行转存至data中,此处this所指向的位置不存在相关内容,也就是说此处的this并不是我们以为的当前组件中的this,因此我们打印此处的this ==>

可以看到这里的this为空即此处的this指向时有问题的

问题起因

经过查询后发现:function函数中的this指向页面的window对象而不是指向该vue组件实例,因此我们需要做的便是使问题代码中的this指向变为vue实例本身。

而选择箭头函数的原因在于箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象。

引用/参考文章内容

vue 箭头函数与function函数的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值