色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue無限滾動下拉

錢浩然1年前9瀏覽0評論

當(dāng)今互聯(lián)網(wǎng)時代,隨著網(wǎng)頁、App和小程序等的普及,在網(wǎng)頁和移動端開發(fā)中,無限滾動下拉(Infinite Scroll)這一功能也日漸流行。它是指在用戶向下滾動界面時,當(dāng)?shù)竭_頁面底部時自動加載更多內(nèi)容,所以用戶不需要點擊翻頁按鈕或刷新頁面來查看更多內(nèi)容。這種交互方式不僅方便用戶瀏覽,也提高了頁面的互動性和用戶留存率。

/*
* 簡單演示無限滾動下拉
*/
// HTML
  • {{ item.content }}
加載中...
// JS new Vue({ el: '#app', data: { allData: [], // 頁面展示的全部數(shù)據(jù) chunkSize: 10, // 每次請求返回的數(shù)據(jù)條數(shù) pageNo: 1, // 當(dāng)前頁碼 isLoading: false // 請求是否正在進行中 }, methods: { // 處理滾動事件 handleScroll() { const scrollWrap = this.$refs.scrollWrap; const scrollTop = scrollWrap.scrollTop; // 滾動條距離頂部的距離 const offsetHeight = scrollWrap.offsetHeight; // 滾動容器的高度 const scrollHeight = scrollWrap.scrollHeight; // 滾動內(nèi)容的高度 if (scrollTop + offsetHeight >= scrollHeight && !this.isLoading) { this.loadData(); } }, // 加載數(shù)據(jù) loadData() { this.isLoading = true; api.getData(this.pageNo, this.chunkSize).then((res) =>{ if (res.code === 0) { this.allData = this.allData.concat(res.data); // 加載新數(shù)據(jù) this.pageNo++; // 當(dāng)前頁碼自增 } }).finally(() =>{ this.isLoading = false; // 請求結(jié)束 }); } }, mounted() { this.loadData(); // 初始加載第一頁數(shù)據(jù) } });

在Vue中實現(xiàn)無限滾動下拉,首先需要對滾動容器進行監(jiān)聽。在上面的代碼中,我們使用了Vue提供的$refs特殊屬性,獲取到了滾動容器的引用scrollWrap,然后在它上面綁定了scroll事件,通過handleScroll方法處理滾動到底部時的邏輯。在handleScroll方法中,通過scrollTop、offsetHeight和scrollHeight獲取到滾動距離和容器尺寸等屬性,進行比較來判斷是否需要加載更多數(shù)據(jù)。

在loadData方法中,我們通過調(diào)用接口獲取新的數(shù)據(jù),然后使用Vue的數(shù)據(jù)響應(yīng)機制concat方法將新的數(shù)據(jù)添加到allData數(shù)組中,同時頁碼自增。isLoading屬性用來表示當(dāng)前是否正在加載數(shù)據(jù)。值得注意的是,為了避免在請求返回前用戶不斷滑動滾動條導(dǎo)致重復(fù)請求的問題,我們在isLoading為真時不處理新的滾動事件。

由于Vue開發(fā)中的數(shù)據(jù)驅(qū)動,類似無限滾動的功能可以在數(shù)據(jù)響應(yīng)式機制和生命周期鉤子函數(shù)的搭配下,較為簡單地實現(xiàn)。除此之外,也可以使用第三方庫(如vue-infinite-loading),精簡開發(fā)工作量。