this.setData估计是小程序中最常常用到的一个方法,可是要注意其实他是有限制的,忽略这些限制的话,会致使数据没法更新小程序
setData的反模式:
-- 短期频繁进行setData操做
--页面进入后台后依然进行setData操做
-- 使用setData一次性设置太多的数据this
这里重点说一下第3点,获取更新列表的时候很是容易触犯第三点,举个栗子:
假设Page中data有items的数据,装着列表的数据code
Page({ data: { items: [], } });
通常状况下,更新items的操做可能以下:开发
loadItems() { //假设经过API获取到新的列表数据:newItems const { items } = this.data; this.setData({ items: items.concat(newItems) }) }
若是完整items的数据量不大的时候,这样作也是能够的,可是列表的数据比较多的时候,后面loadItems时setData的数据就会变很大,超过必定值(1048576)后就会报如下错误,而后列表没法再加载更多it
数据传输长度为 xxxxxx 已经超过最大长度 1048576后台
若遇到这样的状况,个人解决方法是date
loadItems() { //依然假设经过API获取到新的列表数据:newItems const { items } = this.data; const start = items.length; const updateItems = newItems.reduce((updateItems, item, index) => { const key = `items[${start + index}]`; updateItems[key] = item; return updateItems; }, {}) //updateItems 示例: { items[0]: 'content', item[1]: 'content', ... } this.setData(updateItems) }
以上是我开发时遇到的坑,欢迎你们探讨指导,感谢阅读程序