知識
不管是網(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)案例查看更多
相關(guān)閱讀
- 網(wǎng)站優(yōu)化哪家好
- 云南網(wǎng)站建設(shè)價格
- 報廢車拆解回收管理系統(tǒng)
- 云南網(wǎng)站建設(shè)服務
- 網(wǎng)絡公司聯(lián)系方式
- 昆明小程序開發(fā)
- 云南網(wǎng)絡營銷
- 小程序分銷商城
- 百度小程序開發(fā)
- 網(wǎng)站建設(shè)首選公司
- 云南企業(yè)網(wǎng)站
- 云南網(wǎng)站建設(shè)首頁
- 旅游網(wǎng)站建設(shè)
- 汽車拆解管理軟件
- 百度推廣
- 報廢車回收管理系統(tǒng)
- 網(wǎng)站建設(shè)高手
- 云南小程序定制
- 云南網(wǎng)站建設(shè)專業(yè)品牌
- 云南網(wǎng)站建設(shè)方案 doc
- 云南網(wǎng)站建設(shè)首選公司
- 軟件定制公司
- 曲靖小程序開發(fā)
- 微信小程序
- 跳轉(zhuǎn)小程序
- 網(wǎng)站建設(shè)方法
- 定制小程序開發(fā)
- 網(wǎng)站建設(shè)選
- 汽車報廢回收軟件
- 服務器