vue實(shí)現(xiàn)列表滑動(dòng)下拉加載數(shù)據(jù)的方法
一、實(shí)現(xiàn)效果

二、實(shí)現(xiàn)思路
使用滾動(dòng)事件監(jiān)聽(tīng)器來(lái)檢測(cè)用戶是否滾動(dòng)到底部,然后加載更多數(shù)據(jù)
- 監(jiān)聽(tīng)滾動(dòng)事件。
- 檢測(cè)用戶是否滾動(dòng)到底部。
- 加載更多數(shù)據(jù)。
三、案例代碼
<div class="drawer-content">
<div ref="loadMoreTrigger" class="load-more-trigger"></div>
<div v-if="isLoading" class="loading-button">
<button type="primary" loading>加載中...</button>
</div>
</div>
import { onBeforeUnmount, onMounted, ref, watch } from 'vue';
const isLoading = ref(false);
const page = ref(1);
const loadMoreData = async () => {
if (isLoading.value) return;
isLoading.value = true;
// 模擬異步加載數(shù)據(jù)
setTimeout(() => {
const newItems: any = props.chartTableData
?.slice(0, 10)
.map((item) => ({ ...item, id: item.id + page.value * 100 }));
cardList.value = [...cardList.value, ...newItems];
page.value += 1;
isLoading.value = false;
}, 1000);
};
const handleScroll = () => {
const drawerContent = document.querySelector('.drawer-content');
if (drawerContent) {
const { scrollTop, scrollHeight, clientHeight } = drawerContent;
if (scrollTop + clientHeight >= scrollHeight - 10) {
loadMoreData();
}
}
};
onMounted(() => {
const drawerContent = document.querySelector('.drawer-content');
if (drawerContent) {
drawerContent.addEventListener('scroll', handleScroll);
}
});
onBeforeUnmount(() => {
const drawerContent = document.querySelector('.drawer-content');
if (drawerContent) {
drawerContent.removeEventListener('scroll', handleScroll);
}
});
.load-more-trigger {
height: 1px;
}
.loading-button {
text-align: center;
margin-top: 10px;
}到此這篇關(guān)于vue實(shí)現(xiàn)列表滑動(dòng)下拉加載數(shù)據(jù)的文章就介紹到這了,更多相關(guān)vue下拉加載數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用vue實(shí)現(xiàn)滑動(dòng)滾動(dòng)條來(lái)加載數(shù)據(jù)
- vue移動(dòng)UI框架滑動(dòng)加載數(shù)據(jù)的方法
- vue2中的el-select組件數(shù)據(jù)太多,如何實(shí)現(xiàn)滾動(dòng)加載數(shù)據(jù)效果
- vue中el-table實(shí)現(xiàn)無(wú)限向下滾動(dòng)懶加載數(shù)據(jù)
- Vue實(shí)現(xiàn)網(wǎng)頁(yè)首屏加載動(dòng)畫(huà)及頁(yè)面內(nèi)請(qǐng)求數(shù)據(jù)加載loading效果
相關(guān)文章
Vue通過(guò)字符串關(guān)鍵字符實(shí)現(xiàn)動(dòng)態(tài)渲染input輸入框
這篇文章主要為大家詳細(xì)介紹了Vue如何通過(guò)字符串關(guān)鍵字符實(shí)現(xiàn)動(dòng)態(tài)渲染input輸入框。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12
Vue-cli集成axios請(qǐng)求出現(xiàn)CORS跨域問(wèn)題及解決
這篇文章主要介紹了Vue-cli集成axios請(qǐng)求出現(xiàn)CORS跨域問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,2023-10-10
Vue.js實(shí)現(xiàn)一個(gè)自定義分頁(yè)組件vue-paginaiton
這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)一個(gè)自定義分頁(yè)組件vue-paginaiton的具體代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Vue動(dòng)態(tài)改變css樣式的3種方法總結(jié)
這篇文章主要給大家介紹了關(guān)于Vue動(dòng)態(tài)改變css樣式的3種方法,在Vue.js中我們經(jīng)常需要根據(jù)特定的條件或事件來(lái)動(dòng)態(tài)地修改CSS樣式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
Vue 菜單欄點(diǎn)擊切換單個(gè)class(高亮)的方法
今天小編就為大家分享一篇Vue 菜單欄點(diǎn)擊切換單個(gè)class(高亮)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
使用elementuiadmin去掉默認(rèn)mock權(quán)限控制的設(shè)置
這篇文章主要介紹了使用elementuiadmin去掉默認(rèn)mock權(quán)限控制的設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
詳解Vue如何將多個(gè)空格被合并顯示成一個(gè)空格
這篇文章主要為大家詳細(xì)介紹了在Vue中如何將多個(gè)空格被合并顯示成一個(gè)空格,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04

