摘要:簡單說明實際開發(fā)中,當數(shù)據(jù)量很大時,分頁分段加載是必要的,不能一次性加載所有數(shù)據(jù)。分頁加載分頁加載時,需要額外維護幾條相關(guān)數(shù)據(jù)當前頁數(shù)標志是否還有,另外,可選擇性添加字段,用于表示數(shù)據(jù)正在加載。
1 簡單說明
實際開發(fā)中,當數(shù)據(jù)量很大時,分頁(分段)加載是必要的,不能一次性加載所有數(shù)據(jù)。 同時,當用戶瀏覽到頁面底部時,自動加載下一段數(shù)據(jù)并展示,可以增快新頁面內(nèi)容展現(xiàn)速度,提升用戶體驗。
2 分頁加載分頁加載時,需要額外維護幾條相關(guān)數(shù)據(jù):offsetPage(當前頁數(shù))、hasNext(標志是否還有), 另外,可選擇性添加fetching字段,用于表示數(shù)據(jù)正在加載。
data Model 的簡易格式設(shè)計如下:
{ list: [], hasNext: 1, offsetPage: 0, fetching:true }
(ps: 服務(wù)端需要提供支持分段獲取數(shù)據(jù)的API,比如可以通過設(shè)置limit, offset參數(shù)來指定數(shù)據(jù)區(qū)間)
分頁加載大體流程為:
根據(jù)offsetPage以及預(yù)定義好的「每次加載數(shù)據(jù)條數(shù)limit」,設(shè)置分段加載的參數(shù)
異步加載數(shù)據(jù)時,先將fetching屬性置為true,用于顯示loading效果
數(shù)據(jù)獲取完成后,將結(jié)果拼接到list數(shù)組后面,同時將fetching置為false、offsetPage++
3 自動加載分段加載的思路很簡單,下面說說自動加載的一種實現(xiàn)方式,先上實際開發(fā)項目中的截圖。
滾動到「接近列表底部」時,可以看到「加載更多」字樣,
當繼續(xù)滾動頁面到達底部時,則觸發(fā)自動加載:
不難看出這里的實現(xiàn)思路就是「監(jiān)聽DOM的Scroll事件,當滾動到底部或者很接近的時候,觸發(fā)下一頁數(shù)據(jù)的加載」
具體到coding層面的實現(xiàn),則需要先了解DOM元素的幾個屬性:scrollHeight、clientHeight、scrollTop等:
scrollHeight:容器元素中全部內(nèi)容的高度(包括padding)
clientHeight:容器元素的可視區(qū)域(注意,這里不一定是瀏覽器窗口的高度)
借網(wǎng)上的圖說明一下:
scrollTop: 滾動位置距離頂部的高度,當尚未滾動時,該值為0.
通過上訴三個值,即可計算出是否已經(jīng)滾動到容器元素的底部位置了, 偽代碼示意如下:
scrollEventListener(){ let container = getContainerElement(); if(container.scrollHeight - container.clientHeight - container.scrollTop < [一個較小的值]){ //加載下一頁 //getNextPageData() } }4 小tips:
綁定Scroll事件時,先要確定Container Element, 也就是確定想要哪個容器元素有滾動條,這在DOM層級比較深的時候,容易混淆。一個容易犯的錯誤是沒有給目標Container Element指定overflow樣式的值,導(dǎo)致滾動條實際是父元素的,從而無法觸發(fā)Scroll事件。
自動加載的頁數(shù)可以視情況做出限制,比如設(shè)置為只自動加載前10頁,再往后就需要手動點擊「加載更多」。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80465.html
摘要:簡單說明實際開發(fā)中,當數(shù)據(jù)量很大時,分頁分段加載是必要的,不能一次性加載所有數(shù)據(jù)。分頁加載分頁加載時,需要額外維護幾條相關(guān)數(shù)據(jù)當前頁數(shù)標志是否還有,另外,可選擇性添加字段,用于表示數(shù)據(jù)正在加載。 1 簡單說明 實際開發(fā)中,當數(shù)據(jù)量很大時,分頁(分段)加載是必要的,不能一次性加載所有數(shù)據(jù)。 同時,當用戶瀏覽到頁面底部時,自動加載下一段數(shù)據(jù)并展示,可以增快新頁面內(nèi)容展現(xiàn)速度,提升用戶體驗。...
showImg(https://segmentfault.com/img/remote/1460000018771130?w=900&h=500); 簡介 分頁、優(yōu)化、可視區(qū)域、無限加載 寫前端頁面時最經(jīng)常遇到的開發(fā)需求之一就是 渲染后端數(shù)據(jù)返回的數(shù)據(jù)對象,當數(shù)據(jù)對象數(shù)量極多的時候便需要進行分頁。 常見的分頁方式有三種: 在頁面底部生成 上一頁、下一頁、頁面列表 按鈕。 用戶可以很直接的選擇...
摘要:項目中遇到切換列表,每個都需要分頁的需求,分頁流程具有相似性,于是想將分頁封裝為組件,方便應(yīng)用。組件的復(fù)用完成了以上組件,在對其他分頁的頁面,可以直接復(fù)用。 項目中遇到 tab切換列表,每個tab都需要分頁的需求,分頁流程具有相似性,于是想將分頁封裝為組件,方便應(yīng)用。 組件的應(yīng)用已寫成一個小demo,效果如下圖所示(數(shù)據(jù)用mock模擬): showImg(https://segment...
摘要:游標條數(shù)的分頁接口實現(xiàn)命令用于迭代數(shù)據(jù)庫中所有的,但是因為數(shù)據(jù)中的數(shù)量是不能確定的,線上直接執(zhí)行會被打死的,而且的數(shù)量在你操作的過程中也是時刻在變化的,可能有的被刪除,可能期間又有新增的。 分頁接口的實現(xiàn),在偏業(yè)務(wù)的服務(wù)端開發(fā)中應(yīng)該很常見,PC時代的各種表格,移動時代的各種feed流、timeline。 出于對流量的控制,或者用戶的體驗,大批量的數(shù)據(jù)都不會直接返回給客戶端,而是通過...
閱讀 1357·2021-11-24 09:39
閱讀 1346·2021-11-04 16:12
閱讀 2686·2021-09-24 09:47
閱讀 3337·2021-09-01 10:50
閱讀 1477·2019-08-30 15:55
閱讀 1423·2019-08-30 15:43
閱讀 642·2019-08-30 11:08
閱讀 3578·2019-08-23 18:33