高防服务器

微信小程序中报错this.setData怎么解决


微信小程序中报错this.setData怎么解决

发布时间:2022-04-12 17:05:55 来源:高防服务器网 阅读:89 作者:iii 栏目:编程语言

本篇内容主要讲解“微信小程序中报错this.setData怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序中报错this.setData怎么解决”吧!

先说原因:

function声明的函数和箭头函数的作用域不同,这是一个不小心坑的地方。

所以对于这个结果,还是换回es5的function函数去写最好了。

箭头函数和function的区别:

  • 箭头函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象

  • 箭头函数不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误

  • 箭头函数不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替,不可以使用yield命令,因此箭头函数不能用作Generator函数。

这么写会报错

thirdScriptError  this.setData is not a function;at pages/index/index onLoad function;at api getSystemInfo success callback function  TypeError: this.setData is not a function
onLoad: function () {    wx.getSystemInfo({     success: function (res) {      this.setData({       lang: res.language      })      console.log(res.language)     }    })

这么改一下就不报错了。

onLoad: function() {    wx.getSystemInfo({      success: (res) = >{        this.setData({箭头函数的this始终指向函数定义时的this lang: res.language        }) console.log(res.language)      }    })

或者这样:

onLoad: function () {    var that=this;    wx.getSystemInfo({     success: function (res) {      that.setData({       lang: res.language      })      console.log(res.language)     }    })

可以用如下示例说明:

'use strict';  var obj = {   i: 10,   b: () => console.log(this.i, this),   c: function() {    console.log(this.i, this);   }  }  obj.b(); // prints undefined, Window {...} (or the global object)  obj.c(); // prints 10, Object {...}

到此,相信大家对“微信小程序中报错this.setData怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是高防服务器网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[