欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

說說微信小程序開發(fā)的那些坑--setData - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關(guān) >

說說微信小程序開發(fā)的那些坑--setData

發(fā)表時間:2021-3-31

發(fā)布人:葵宇科技

瀏覽次數(shù):75

this.setData估計是小程序中最經(jīng)常用到的一個方法,但是要注意其實他是有限制的,忽略這些限制的話,會導致數(shù)據(jù)無法更新

setData的反模式:
-- 短時間頻繁進行setData操作
--頁面進入后臺后依然進行setData操作
-- 使用setData一次性設(shè)置太多的數(shù)據(jù)

這里重點說一下第3點,獲取更新列表的時候非常容易觸犯第三點,舉個栗子:
假設(shè)Page中data有items的數(shù)據(jù),裝著列表的數(shù)據(jù)

 Page({
  data: {
    items: [],
  }
});

一般情況下,更新items的操作可能如下:

loadItems() {
    //假設(shè)通過API獲取到新的列表數(shù)據(jù):newItems
    const { items } = this.data;
    this.setData({
    items: items.concat(newItems)
  })
}

如果完整items的數(shù)據(jù)量不大的時候,這樣做也是可以的,但是列表的數(shù)據(jù)比較多的時候,后面loadItems時setData的數(shù)據(jù)就會變很大,超過一定值(1048576)后就會報以下錯誤,然后列表無法再加載更多

數(shù)據(jù)傳輸長度為 xxxxxx 已經(jīng)超過最大長度 1048576

若遇到這樣的情況,我的解決方法是

loadItems() {
    //依然假設(shè)通過API獲取到新的列表數(shù)據(jù):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)
}

以上是我開發(fā)時遇到的坑,歡迎大家探討指導,感謝閱讀

相關(guān)案例查看更多