在微信小程序中, 有些时候需要修改一个列表或者一个复杂的json对象, 一般的做法是, 找到这个字段直接修改,然后使用this.setData({})
来进行覆盖赋值, 然而这种方式当页面数据比较下的时候, 是没什么问题, 但是当数据多了之后,页面会变得非常卡顿,并且小程序会发出性能警告 Tue Nov 23 2021 14:45:18 GMT+0800 (中国标准时间)数据传输长度过长
,如下图,
这个时候就不能使用 this.setData({})
赋值的方式直接覆盖原有的对象, 而是针对某一项的值进行修改
//常规做法
let json = [{id:1},{id:2},{id:3},{id:4},{id:5},{id:6},{id:7}]
json[0].id = 10;
this.setData({
json: json
})
//动态赋值
var index = 0;
let obj = `json[`+index+`].id`
this.setData({
[obj]: 10
})
动态赋值可以避免全部数据重新渲染,从而造成性能问题。