温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-07-05 11:17:01 来源:亿速云 阅读:209 作者:小新 栏目:web开发

这篇文章将为大家详细讲解有关微信小程序中报错this.setData怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

先说原因:

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

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

所以对于这个结果,还是换回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怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI