一分钟解决微信小程序在循环或者setInterval中渲染(this.setData)出错问题

大家好,我又来给大家安利让大家头痛的问题解决办法啦。最近发现很多新手或者对微信小程序源码理解不深的小可爱们会遇到在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篇和小程序篇)让你一分钟实现相应的功能,成功引起产品经理的注意袄。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值