一分钟解决微信小程序在循环或者setInterval中渲染(this.setData)出错问题 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

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

发表时间:2020-9-25

发布人:葵宇科技

浏览次数:73

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

相关案例查看更多