摘要:就是下圖中,條數據的高度,但是因為有滾動條,所以屏幕看不到這么高當元素出現滾動條時,向下拖動滾動條,內容向上滾動的距離。如果該元素沒有滾動條,則的值為,該值只能是正值。
在項目中遇到了一個性能問題
vue+elementUI table表格展示數據,當數據很多的時候,不能一頁顯示完,同時一次請求數據量太大,會增加網頁渲染的時間,影響體驗,
這個時候常常有兩種方法處理,
1、分頁,如下
2、如果我不想分頁,又想在一頁顯示全部數據呢?這個時候其實就可以用數據懶加載了
如下一開始表格只顯示31行數據
當將滾動條拉到低的時候,就會再加載31條數據,如果剩下的數據不足31,那就加載剩下的
根據項目需求,這需要一頁可以看到全部數據,所以我選擇了第二中方式
那么第二種方式要怎么去實現呢?
在了解它的原理前,你需要分清楚三個屬性:
scrollHeight:指元素的總高度,包含滾動條中的內容。只讀屬性。不帶px單位。就是下圖中,54條數據的高度,但是因為有滾動條,所以屏幕看不到這么高
scrollTop:當元素出現滾動條時,向下拖動滾動條,內容向上滾動的距離。可讀可寫屬性。不帶px單位。如果該元素沒有滾動條,則scrollTop的值為0,該值只能是正值。就是下圖中紅色框的高度
clientHeight:元素客戶區的大小,指的是元素內容及其邊框所占據的空間大小,實際上就是可視區域的大小。就是下圖紅色箭頭的高度
那如何判斷滾動條滾到底部了呢?
scrollHeight-scrollTop-clientHeight=0,這個時候可以就是滾動條滾到底部的時候了。
在第一次請求數據的時候,先設置一個變量來記錄請求次數(其實后臺也是做分頁的處理)
this.currentPage = 1, $this = this; this.$axios.fun().then(res=>{ $this.totalPage = res.totalPage; //這里需要知道總頁數 $this.tableData = res.data;//表格數據 })
監聽表格dom對象的滾動事件
let dom = document.querySelector(targetDom); dom.addEventListener("scroll", function() { const scrollDistance =dom.scrollHeight - dom.scrollTop - dom.clientHeight; if(scrollDistance <=0){//等于0證明已經到底,可以請求接口 if($this.currentPage < $this.totalPage){//當前頁數小于總頁數就請求 $this.currentPage++;//當前頁數自增 //請求接口的代碼 $this.$axios.fun().then(res=>{ $this.tableData = $this.tableData.concat(res.data)//將請求回來的數據和當前展示的數據合并在一起 }) } } })
好了,表格滾動下拉懶加載數據就是這樣實現的,希望可以幫到有需求的同學。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103171.html
摘要:如果我們能把不同路由對應的組件分割成不同的代碼塊,然后當路由被訪問的時候才加載對應組件,這樣就更加高效了。 前言 之前用vuecli做了個博客,是一個單頁面項目,大概有十個路由直接npm run build打包出來,有一個1M的巨大js文件 showImg(https://segmentfault.com/img/bVbtXVk?w=1516&h=218); 先掛載到服務器上試試好家伙...
摘要:基于這種思路,那留給我們的只有兩步,組件設計和數據設計。關于組件的相關邏輯,可能要在文章里面一次性說清楚,還是需要費很大的精力,不過希望數據驅動的思想能夠讓之前沒有體會到這種開發樂趣的小伙伴們有到新的想法。 在日常開發中,我們肯定不止一次碰到重復的業務代碼,明明功能相似,但總沒思路去把它封裝成組件。關于封裝組件,希望這篇文章能帶給大家新的思路,去更高效的完成日常開發。(注:例子都是基于...
摘要:獲取字符串中出現次數最多的字符。去掉字符串中的所有空格中對象數組按對象屬性排序 VUE 1、vue——解決You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use / eslint-disable / to ign...
摘要:獲取字符串中出現次數最多的字符。去掉字符串中的所有空格中對象數組按對象屬性排序 VUE 1、vue——解決You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use / eslint-disable / to ign...
閱讀 2600·2021-11-15 11:38
閱讀 2618·2021-11-04 16:13
閱讀 17981·2021-09-22 15:07
閱讀 1014·2019-08-30 15:55
閱讀 3261·2019-08-30 14:15
閱讀 1663·2019-08-29 13:59
閱讀 3207·2019-08-28 18:28
閱讀 1575·2019-08-23 18:29