小程序模板網(wǎng)

嘗試解決微信小程序分頁最后setData數(shù)據(jù)太大限制的問題

發(fā)布時間:2018-10-18 08:40 所屬欄目:小程序開發(fā)教程

前些天,突然接到用戶的大量反饋,我們的小程序頻繁出現(xiàn)閃退,崩潰的現(xiàn)象。如圖,

于是馬上著手追查問題,首先確定了導(dǎo)致閃退的頁面。是在一個有長列表的頁面,當(dāng)上拉加載更多,翻頁翻多幾頁的時候就導(dǎo)致閃退了。經(jīng)過重重排查(時間問題,這里就不詳細描述排查的方法了,大多數(shù)用的都是縮小范圍排除法啦),最后終于確定了問題所在,原來是在列表中,同事最近新加上的css3動畫所致,這里的列表是循環(huán)渲染的一個組件,組件中的一個彈窗的彈出和收起,使用動畫,但是這里沒有加上wx:if,導(dǎo)致了循環(huán)渲染該動畫,所以翻頁翻著翻著就掛掉了。 確定了問題,就很好辦了,加上條件判斷,只有需要的時候,才渲染彈出彈窗。真機調(diào)試,暴力狂刷數(shù)據(jù),發(fā)現(xiàn)閃退的現(xiàn)象不再出現(xiàn)了,閃退問題解決,然而高興不到三分鐘,又出問題了,發(fā)現(xiàn)翻頁到十幾頁的時候,再也刷不動后面的數(shù)據(jù)了,明明是還有更多數(shù)據(jù)的。再在開發(fā)工具上看查看數(shù)據(jù),結(jié)果控制臺報了這么一個錯

在真機上為:

這是什么問題呢,查看官方文檔,發(fā)現(xiàn)是有這樣的限制的

回顧我們的代碼,這里的分頁加載數(shù)據(jù),上拉加載,數(shù)據(jù)是放在一個for循環(huán)里去加載,數(shù)據(jù)源是一個數(shù)組對象。在加載下一頁數(shù)據(jù)時,將下一頁的數(shù)據(jù)拼到當(dāng)前數(shù)組后面。這里是常規(guī)的做法。可以看看代碼:

這里可以看到,每次獲取新的一頁,都要重新setData新的數(shù)組,仔細想想,當(dāng)這個數(shù)組到后面越來越大的時候,很容易就超出了單次設(shè)置數(shù)據(jù)超過1024kb的限制了。那么怎么解決這個問題呢,這里官方文檔里面其實有提到一個注意點,

既然這里是支持改變數(shù)組的某一項,那么分頁的問題,可以改變?yōu)橐粋€二維數(shù)組,還是直接看代碼吧。

這里的方法則暫時擺脫了單次設(shè)置數(shù)據(jù)多大的問題。當(dāng)然,要是單頁的數(shù)據(jù)過多,還是會出現(xiàn)問題的。最合適的還是對數(shù)據(jù)結(jié)構(gòu)進行精簡,前端不必要的數(shù)據(jù),可以不傳過來前端。

寫在最后,這次第一次寫類似的分享,描述還是有些不清晰,以后可以多嘗試這樣的總結(jié)吧。


 


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://m.u-renovate.com/wxmini/doc/course/24888.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×