this.setData没有将数据渲染至视图层?
发布于 5 年前 作者 daiming 12046 次浏览 来自 官方Issues

开发了个用户上传图片的功能,用fileID显示图片的,wx.cloud.uploadFile每次只能上传一个文件,所以只好用for循环来上传多个文件。this.setData放在循环内,会被频繁调用从而影响性能,所以应该把this.setData放在循环外,等fileID都push好之后,再渲染至视图层,但是放在循环体外this.setData就无法将数据渲染至视图层了。

已经在循环外console.log看过了file,that.data.imagesID的值是正确的,不是空数组。基本上确定了就是setData的问题,还有在循环体内调用that.setData就正常了,但这样太影响性能了,请大佬们看看该怎么将数据传到渲染层……

6 回复

你上传之后success里面的js是异步的,它不会等你全部执行完才执行下面的this.setData,你在success里面打一个console,在for外面打印一个console就知道了

this.setData({})更新下你改变的数组,就渲染了

你这个file是数组吧,imageID应该是单个图片吧

我也遇到同样的问题,你解决了么?

解决了,换个思路,同样在addimages函数里,先用临时链接来渲染视图层,展示给用户看,然后函数再继续将fileID保存起来

await wx.cloud.uploadFile

回到顶部