this.setData没有将数据渲染至视图层?

发布于 6 年前作者 daiming12400 次浏览最后编辑 6 年前来自 issues

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

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

6 回复
vpan
vpan1 楼6 年前

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

lixia
lixia2 楼6 年前

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

fzhou
fzhou3 楼6 年前

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

vpan
vpan4 楼6 年前

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

jun36
jun365 楼6 年前

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

mengtao
mengtao6 楼4 年前

await wx.cloud.uploadFile