網站首頁 編程語言 正文
場景
? ? ? ? 在這兩天的開發任務中遇到了一個很奇葩的問題,并且它是偶發性的,大致情況是在某些電腦上,elementUI無線滾動總是正常執行的,但是在個別電腦上會出現偶發無線滾動不觸發的情況,在經過大量的場景模擬下發現,出現無線滾動不觸發的情況大致和渲染時間的長短有關(猜想,因為我確實沒有模擬出必現的情況)。
解決方式
? ? ? ? 解決方式是以無線滾動作為主要的數據加載方式,同時判斷如果無限滾動未觸發,并且頁面數據加載未完成,則使用滾動條觸底事件作為備用數據加載方式。
代碼實現
infinite-scroll-disabled:是否禁用
infinite-scroll-delay:節流時延
infinite-scroll-distance:觸發加載的距離閾值
infinite-scroll-immediate:是否立即執行加載方法,以防初始狀態下內容無法撐滿容器。
// 滾動條在listArea上
<div ref="listArea">
<div v-infinite-scroll="queryList"
:infinite-scroll-delay="10"
infinite-scroll-distance="300"
:infinite-scroll-immediate="'false'"
:infinite-scroll-disabled="loading||allLoaded||requestFail">
<div v-for="(item, index) in tableList">
{{item:index}}
</div>
<div>
</div>
mounted () {
// 必須使用nextTick獲取DOM,否則你可能拿不到它
this.$nextTick(()=>{
this.$refs.listArea.addEventListener('scroll',this.handleScroll,true);
});
},
beforeDestroy () {
// 所有的監聽事件、定時器等必須在頁面卸載后進行移除,否則可能會造成不可預知的錯誤,如:內存泄漏
// 移除監聽事件
this.$refs.listArea.removeEventListener('scroll', this.handleScroll);
},
methods:{
handleScroll (e){
//滾動條滾動時,距離頂部的距離
const scrollTop = e.target.scrollTop;
//可視區的高度
const windowHeight = e.target.clientHeight;
//滾動條的總高度
const scrollHeight = e.target.scrollHeight;
//滾動條到底部的條件
if(scrollTop+windowHeight===scrollHeight){
// 判斷數據是否加載完成、是否正在加載
if (!this.allLoaded && !this.loading){
// 獲取數據方法
// 在請求數據方法中,將loading修改為true,防止重復觸發
// 在情書數據結束后,將loading修改為false
// 在所有數據請求完成后,將allLoaded修改為true
this.queryList();
}
}
},
}
問題
頁面存在其他滾動條時,其他滾動條觸底也會觸發數據請求方法
解決方法:將監聽事件綁定到你需要觸發滾動條觸底的div上,而不是綁定在window上,代碼就不貼了,沒啥大變化。
原文鏈接:https://blog.csdn.net/m0_47135993/article/details/121670550
相關推薦
- 2022-11-03 關于golang?test緩存問題_Golang
- 2022-12-21 Android?ChipGroup收起折疊效果實現詳解_Android
- 2023-06-20 k8s應用監控探針詳解_云其它
- 2023-07-17 uniapp 用forEach循環遍歷數組
- 2023-01-30 Numpy?np.array()函數使用方法指南_python
- 2022-07-10 $route和this.$router區別
- 2022-05-19 Python學習之異常斷言詳解_python
- 2023-02-15 docker刪除none鏡像的操作方法_docker
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支