干掉微信小程序-列表(分頁)的局部更新


干掉微信小程序-列表(分頁)的局部更新

問題描述

列表的局部更新在頁面數據量大的情況下還是很重要的。
在一個列表中,有n條數據,采用觸底加載更多的方式,在請求獲取到數據后。
此時,可以采用setData全局刷新。
這樣做的優點是:簡單,方便
缺點是:用戶體驗在頁面刷出大量數據后極差,由於重新渲染量極大,會出現空白期(沒有渲染過來,當然也可以采用骨架屏的方式,但是全局渲染仍然不推薦使用)。

所以,接下來說說,采用setData進行局部刷新的兩種思路。

實現方法一:

直接在列表上進行局部添加。
這種方法在wxml中需要使用單重循環。

js代碼

// 采取局部增添式下拉加載goods
let list = res.resultList;
let index = _this.data.resultList.length;
let data = _this.data;
list.forEach((item) => {
  data['resultList[' + (index++) + ']'] = item;
});
_this.setData(data);

wxml代碼

<block wx:for="{{resultList}}">
  <view>item.name</view>
</block>

實現方法二:

先聲明一個pages的列表,每次觸底加載后,在pages上進行局部添加。
這種方法在wxml中需要使用雙重循環。

js代碼

const pages = this.data.pages
this.setData({
  [`pages[${pages.length}]`]: res.resultList,
})

wxml代碼

<block wx:for="{{pages}}" wx:key="page">
  <block wx:for="{{item}}">
    <view>item.name</view>
  </block>
</block>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM