data: {
channelList: [{
channelName: "aaa",
channelId: "0",
resList: [{
title: 'aaa_111',
imgUrl: 'http://...',
des: 'blabla...'
},{
title: 'aaa_222',
imgUrl: 'http://...',
des: 'blabla...'
},...]
}, {
channelName: "bbb",
channelId: "12345",
resList: [{
title: 'bbb_111',
imgUrl: 'http://...',
des: 'blabla...'
},{
title: 'bbb_222',
imgUrl: 'http://...',
des: 'blabla...'
},...]
}, {
channelName: "ccc",
channelId: "4567",
resList: []
},...]
}
类似这种结构的Data,想给channelId:12345的resList增加数据,现在做法是:
var channelList = this.data.channelList;
for (let i = 0; i < channelList.length; i++) {
if (channelList[i].channelId == '12345') {
channelList[i].resList.concat(arr)
}
}
this.setData({
channelList:channelList
})
问题是:
1.感觉写的复杂了,有没有简便的方法?
2.channelList的数据比较多,仅仅因为修改某一个部分,就通过setData更新了整个channelList数据,会不会明显影响性能?
了解一下wx:key的概念
https://mp.weixin.qq.com/debu...
当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。
可以实现虽然是全部修改、但是是部分渲染