一分钟解决微信小程序在循环或者setInterval中渲染(this.setData)出错问题
发表时间:2020-9-25
发布人:葵宇科技
浏览次数:103
大家好,我又来给大家安利让大家头痛的问题解决办法啦。最近发现很多新手或者对微信小程序源码理解不深的小可爱们会遇到在this.setData渲染时出现错误的问题,怎么都解决不了,明明代码都对的。或不多说干货奉上。
当你的代码是:
var name = "huangzu98";
for(let i=0;i<this.data.array.length;i++){
if(if(this.data.array[i].name != name){
this.setData({
array[i].name:name
})
}
}
或者是这样:
var name = "huangzu98";
var interval = setInterval(function () {
this.setDate({
devName:name
})
},600)
如果你出现上面类似代码编写时会出现TypeError: this.setDate is not a function,仔细发现代码都是正确的。
这是因为this作用域指向问题 ,很多函数实际是一个闭包 , 无法直接通过this来setData
那么需要怎么修改呢?
我们通过将当前对象赋给一个新的对象
var that = this;
然后使用that 来setData就行了
var name = “huangzu98”;
var that = this;
var interval = setInterval(function () {
that.setDate({
devName:name
})
},600)
到这里就结束了,希望帮助你顺利脱坑,以上代码均是我举例说明,请结合自己实际代码进行调试。
希望能够帮到大家哦!IT需要爱与和平😊,最后请大家关注我,以及我的一分钟系列(Android篇和小程序篇)让你一分钟实现相应的功能,成功引起产品经理的注意袄。