国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

網(wǎng)頁(yè)中,列表數(shù)據(jù)的分頁(yè)加載、自動(dòng)加載

snifes / 3239人閱讀

摘要:簡(jiǎn)單說(shuō)明實(shí)際開發(fā)中,當(dāng)數(shù)據(jù)量很大時(shí),分頁(yè)分段加載是必要的,不能一次性加載所有數(shù)據(jù)。分頁(yè)加載分頁(yè)加載時(shí),需要額外維護(hù)幾條相關(guān)數(shù)據(jù)當(dāng)前頁(yè)數(shù)標(biāo)志是否還有,另外,可選擇性添加字段,用于表示數(shù)據(jù)正在加載。

1 簡(jiǎn)單說(shuō)明

實(shí)際開發(fā)中,當(dāng)數(shù)據(jù)量很大時(shí),分頁(yè)(分段)加載是必要的,不能一次性加載所有數(shù)據(jù)。 同時(shí),當(dāng)用戶瀏覽到頁(yè)面底部時(shí),自動(dòng)加載下一段數(shù)據(jù)并展示,可以增快新頁(yè)面內(nèi)容展現(xiàn)速度,提升用戶體驗(yàn)。

2 分頁(yè)加載

分頁(yè)加載時(shí),需要額外維護(hù)幾條相關(guān)數(shù)據(jù):offsetPage(當(dāng)前頁(yè)數(shù))、hasNext(標(biāo)志是否還有), 另外,可選擇性添加fetching字段,用于表示數(shù)據(jù)正在加載。

data Model 的簡(jiǎn)易格式設(shè)計(jì)如下:

{
    list: [],
    hasNext: 1,
    offsetPage: 0,
    fetching:true
}

(ps: 服務(wù)端需要提供支持分段獲取數(shù)據(jù)的API,比如可以通過設(shè)置limit, offset參數(shù)來(lái)指定數(shù)據(jù)區(qū)間)

分頁(yè)加載大體流程為:

根據(jù)offsetPage以及預(yù)定義好的「每次加載數(shù)據(jù)條數(shù)limit」,設(shè)置分段加載的參數(shù)

異步加載數(shù)據(jù)時(shí),先將fetching屬性置為true,用于顯示loading效果

數(shù)據(jù)獲取完成后,將結(jié)果拼接到list數(shù)組后面,同時(shí)將fetching置為false、offsetPage++

3 自動(dòng)加載

分段加載的思路很簡(jiǎn)單,下面說(shuō)說(shuō)自動(dòng)加載的一種實(shí)現(xiàn)方式,先上實(shí)際開發(fā)項(xiàng)目中的截圖。
滾動(dòng)到「接近列表底部」時(shí),可以看到「加載更多」字樣,

當(dāng)繼續(xù)滾動(dòng)頁(yè)面到達(dá)底部時(shí),則觸發(fā)自動(dòng)加載:

不難看出這里的實(shí)現(xiàn)思路就是「監(jiān)聽DOM的Scroll事件,當(dāng)滾動(dòng)到底部或者很接近的時(shí)候,觸發(fā)下一頁(yè)數(shù)據(jù)的加載」
具體到coding層面的實(shí)現(xiàn),則需要先了解DOM元素的幾個(gè)屬性:scrollHeight、clientHeight、scrollTop等:

scrollHeight:容器元素中全部?jī)?nèi)容的高度(包括padding)

clientHeight:容器元素的可視區(qū)域(注意,這里不一定是瀏覽器窗口的高度)

借網(wǎng)上的圖說(shuō)明一下:

scrollTop: 滾動(dòng)位置距離頂部的高度,當(dāng)尚未滾動(dòng)時(shí),該值為0.

通過上訴三個(gè)值,即可計(jì)算出是否已經(jīng)滾動(dòng)到容器元素的底部位置了, 偽代碼示意如下:

scrollEventListener(){
    let container = getContainerElement();
    if(container.scrollHeight - container.clientHeight - container.scrollTop < [一個(gè)較小的值]){
         //加載下一頁(yè)
         //getNextPageData()
    }
}
4 小tips:

綁定Scroll事件時(shí),先要確定Container Element, 也就是確定想要哪個(gè)容器元素有滾動(dòng)條,這在DOM層級(jí)比較深的時(shí)候,容易混淆。一個(gè)容易犯的錯(cuò)誤是沒有給目標(biāo)Container Element指定overflow樣式的值,導(dǎo)致滾動(dòng)條實(shí)際是父元素的,從而無(wú)法觸發(fā)Scroll事件。

自動(dòng)加載的頁(yè)數(shù)可以視情況做出限制,比如設(shè)置為只自動(dòng)加載前10頁(yè),再往后就需要手動(dòng)點(diǎn)擊「加載更多」。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/50094.html

相關(guān)文章

  • 網(wǎng)頁(yè)列表數(shù)據(jù)分頁(yè)加載自動(dòng)加載

    摘要:簡(jiǎn)單說(shuō)明實(shí)際開發(fā)中,當(dāng)數(shù)據(jù)量很大時(shí),分頁(yè)分段加載是必要的,不能一次性加載所有數(shù)據(jù)。分頁(yè)加載分頁(yè)加載時(shí),需要額外維護(hù)幾條相關(guān)數(shù)據(jù)當(dāng)前頁(yè)數(shù)標(biāo)志是否還有,另外,可選擇性添加字段,用于表示數(shù)據(jù)正在加載。 1 簡(jiǎn)單說(shuō)明 實(shí)際開發(fā)中,當(dāng)數(shù)據(jù)量很大時(shí),分頁(yè)(分段)加載是必要的,不能一次性加載所有數(shù)據(jù)。 同時(shí),當(dāng)用戶瀏覽到頁(yè)面底部時(shí),自動(dòng)加載下一段數(shù)據(jù)并展示,可以增快新頁(yè)面內(nèi)容展現(xiàn)速度,提升用戶體驗(yàn)。...

    BDEEFE 評(píng)論0 收藏0
  • 每日 30 秒 ? 判斷是否為頁(yè)面底部

    showImg(https://segmentfault.com/img/remote/1460000018771130?w=900&h=500); 簡(jiǎn)介 分頁(yè)、優(yōu)化、可視區(qū)域、無(wú)限加載 寫前端頁(yè)面時(shí)最經(jīng)常遇到的開發(fā)需求之一就是 渲染后端數(shù)據(jù)返回的數(shù)據(jù)對(duì)象,當(dāng)數(shù)據(jù)對(duì)象數(shù)量極多的時(shí)候便需要進(jìn)行分頁(yè)。 常見的分頁(yè)方式有三種: 在頁(yè)面底部生成 上一頁(yè)、下一頁(yè)、頁(yè)面列表 按鈕。 用戶可以很直接的選擇...

    callmewhy 評(píng)論0 收藏0
  • 小程序分頁(yè)實(shí)踐:編寫可復(fù)用分頁(yè)組件

    摘要:項(xiàng)目中遇到切換列表,每個(gè)都需要分頁(yè)的需求,分頁(yè)流程具有相似性,于是想將分頁(yè)封裝為組件,方便應(yīng)用。組件的復(fù)用完成了以上組件,在對(duì)其他分頁(yè)的頁(yè)面,可以直接復(fù)用。 項(xiàng)目中遇到 tab切換列表,每個(gè)tab都需要分頁(yè)的需求,分頁(yè)流程具有相似性,于是想將分頁(yè)封裝為組件,方便應(yīng)用。 組件的應(yīng)用已寫成一個(gè)小demo,效果如下圖所示(數(shù)據(jù)用mock模擬): showImg(https://segment...

    crelaber 評(píng)論0 收藏0
  • 基于游標(biāo)分頁(yè)接口實(shí)現(xiàn)

    摘要:游標(biāo)條數(shù)的分頁(yè)接口實(shí)現(xiàn)命令用于迭代數(shù)據(jù)庫(kù)中所有的,但是因?yàn)閿?shù)據(jù)中的數(shù)量是不能確定的,線上直接執(zhí)行會(huì)被打死的,而且的數(shù)量在你操作的過程中也是時(shí)刻在變化的,可能有的被刪除,可能期間又有新增的。 分頁(yè)接口的實(shí)現(xiàn),在偏業(yè)務(wù)的服務(wù)端開發(fā)中應(yīng)該很常見,PC時(shí)代的各種表格,移動(dòng)時(shí)代的各種feed流、timeline。 出于對(duì)流量的控制,或者用戶的體驗(yàn),大批量的數(shù)據(jù)都不會(huì)直接返回給客戶端,而是通過...

    godruoyi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<