避免在微信小程序中频繁使用setData方法
一、批量处理数据,减少调用次数
问题:在循环、事件回调中频繁单独调用 setData
(如每次修改一条数据就调用一次)。
解决:先在内存中批量处理数据,最后一次性调用 setData
。
优化前(错误示例):
// 循环中多次调用 setData,每次修改一条数据
for (let i = 0; i < 100; i++) {this.setData({[`items[${i}].status`]: true});
}
优化后(正确示例):
// 1. 先在内存中批量修改
const newItems = [...this.data.items]; // 复制原数据
for (let i = 0; i < 100; i++) {newItems[i].status = true; // 内存中修改
}// 2. 一次性更新到视图
this.setData({items: newItems
});
二、分离 “渲染数据” 和 “非渲染数据”
问题:将无需在页面渲染的数据(如临时计算结果、定时器 ID、后端返回的原始数据)也存入 data
中,导致无关数据触发 setData
。
解决:非渲染数据直接存在页面实例(this
)上,不放入 data
。
优化前(错误示例):
// 把无需渲染的临时数据存入 data
this.setData({