最近总是发现手机黑屏,无意间发现一个问题,collection().watch(),第一次进入页面会监听产生一个wi(requestId:“XXXXXXX”),但是当返回上一级页面再次进入该页面时,也会产生一个wi(requestId:“XXXXXXX”),当后台数据更新后,此时控制台可以产生2个wi(requestId:"");于是我再次返回后进入该页面,就会产生3个wi(requestId:""),以此类推,当我反复进入这个watch页面,就会产生多个wi(requestId:""),而当后台数据更新后我要重新setData()页面上的数据,就会在短时间内多次setData(),理论上就会造成手机屏幕闪烁甚至黑屏
确实是的,我刚刚也试了,之前一直没注意关闭
页面onUnload要关闭watch呀,有开有关
onLoad: function () {
const db = wx.cloud.database()
this.watcher = db.collection('todos').where({}).watch({
onChange: function (snapshot) { },
onError: function (err) { }
})
},
onUnload: function () {
this.watcher.close()
}