欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Element-plus表格數(shù)據(jù)延遲加載的實(shí)現(xiàn)方案

 更新時(shí)間:2024年11月23日 11:06:28   作者:AI六月  
本文介紹了在前端展示大量數(shù)據(jù)時(shí)遇到的加載卡頓問(wèn)題,并提供了一種解決方案:延遲加載,具體做法是設(shè)置加載數(shù)量,對(duì)于數(shù)據(jù)量較大的情況,進(jìn)行分批加載數(shù)據(jù),通過(guò)類選擇器找到表格滾動(dòng)條并進(jìn)行監(jiān)聽(tīng)綁定事件,感興趣的朋友跟隨小編一起看看吧

在前端展示數(shù)據(jù)量過(guò)大的表格時(shí),會(huì)出現(xiàn)加載卡頓問(wèn)題。

目前業(yè)務(wù)場(chǎng)景(加載數(shù)據(jù)量過(guò)五萬(wàn)條的數(shù)據(jù)在表格中展示)

解決方案:延遲加載,設(shè)置加載數(shù)量,首先加載展示一定數(shù)量的數(shù)據(jù),監(jiān)聽(tīng)表格的滾動(dòng)條事件,當(dāng)滾動(dòng)到可視化數(shù)據(jù)量的最底部觸發(fā)再加載數(shù)據(jù)事件

展示效果圖:

        當(dāng)滾動(dòng)到前一次加載的數(shù)據(jù)量結(jié)束后,觸發(fā)再加載事件。如圖

上代碼:

<el-table class="scrollbar" :data="tableData" border
                                style="width: 700px; height: 260px; font-size: 12px; margin-left: 20px;"
                                @header-click="handleTableClick">
                                <el-table-column prop="x" label="x" />
                                <el-table-column prop="壓強(qiáng)" label="壓強(qiáng)" />
                                <el-table-column prop="馬赫數(shù)" label="馬赫數(shù)" />
                                <el-table-column prop="溫度" label="溫度" />
                                <el-table-column prop="速度" label="速度" />
                                <el-table-column prop="燃?xì)饷芏? label="燃?xì)饷芏? />
                            </el-table>
                            <div style="text-align: center; font-size: 12px; color: #969292;">{{ loadDataMesssage }}</div>

        其中,添加類選擇器 class="scrollbar",主要作用是方便找到對(duì)應(yīng)表格的滾動(dòng)條

let data: any = [];
let data2: any = [];
let data3: any = [];
let data4: any = [];
let data5: any = [];
// 當(dāng)前已加載的數(shù)據(jù)量
let loadedDataCount = 0;
const scrollTableDom = ref();
const loadDataMesssage = ref('');
const loadData = () => {
    if (data.length < 500) {
        const data1: TableDataType[] = [];
        for (let i = 0; i < data.length; i++) {
            data1.push({
                'x': data[i].x.toFixed(4),
                '壓強(qiáng)': data[i].p.toFixed(4),
                '馬赫數(shù)': data2[i].mach.toFixed(4),
                '溫度': data3[i].temperature.toFixed(4),
                '速度': data4[i].velocity.toFixed(4),
                '燃?xì)饷芏?: data5[i].density.toFixed(4)
            });
        }
        tableData.value = data1;
    } else {
        scrollTableDom.value = document.querySelector('.scrollbar .el-table__body-wrapper .el-scrollbar__wrap');
        if (scrollTableDom.value) {
            scrollTableDom.value.addEventListener("scroll", handleScroll);
        }
        const batchSize = Math.floor(data.length / 50); // 每次加載的數(shù)據(jù)量
        const newData = [];
        for (let i = loadedDataCount; i < loadedDataCount + batchSize && i < data.length; i++) {
            newData.push({
                'x': data[i].x.toFixed(4),
                '壓強(qiáng)': data[i].p.toFixed(4),
                '馬赫數(shù)': data2[i].mach.toFixed(4),
                '溫度': data3[i].temperature.toFixed(4),
                '速度': data4[i].velocity.toFixed(4),
                '燃?xì)饷芏?: data5[i].density.toFixed(4)
            });
        }
        loadedDataCount += batchSize;
        tableData.value = [...tableData.value, ...newData];
    }
};
const handleScroll = (event: any) => {
    const target = event.target;
    const scrollContainer = target;
    const scrollPosition = scrollContainer.scrollHeight - scrollContainer.scrollTop - scrollContainer.clientHeight;
    if (scrollPosition <= 0 && loadedDataCount < data.length) {
        console.log('滾動(dòng)到底部了,加載更多數(shù)據(jù)');
        loadDataMesssage.value = '正在加載...';
        loadData();
    } else if (scrollPosition === 0 && loadedDataCount >= data.length) {
        console.log('數(shù)據(jù)為空,無(wú)法加載更多數(shù)據(jù)');
        loadDataMesssage.value = '已經(jīng)到底了';
    } else {
        loadDataMesssage.value = '';
    }
};

        我在這里設(shè)置了兩種加載方式,當(dāng)數(shù)據(jù)量少于500條時(shí),就直接賦值給表格,不會(huì)出現(xiàn)打開(kāi)表格卡頓,當(dāng)數(shù)據(jù)量大于500條時(shí),進(jìn)行分批加載數(shù)據(jù)。

        通過(guò)類選擇器找到表格滾動(dòng)條并進(jìn)行監(jiān)聽(tīng)綁定事件,handleScroll

 scrollTableDom.value = document.querySelector('.scrollbar .el-table__body-wrapper .el-scrollbar__wrap');
        if (scrollTableDom.value) {
            scrollTableDom.value.addEventListener("scroll", handleScroll);
        }
const handleScroll = (event: any) => {
    const target = event.target;
    const scrollContainer = target;
    const scrollPosition = scrollContainer.scrollHeight - scrollContainer.scrollTop - scrollContainer.clientHeight;
    if (scrollPosition <= 0 && loadedDataCount < data.length) {
        console.log('滾動(dòng)到底部了,加載更多數(shù)據(jù)');
        loadDataMesssage.value = '正在加載...';
        loadData();
    } else if (scrollPosition === 0 && loadedDataCount >= data.length) {
        console.log('數(shù)據(jù)為空,無(wú)法加載更多數(shù)據(jù)');
        loadDataMesssage.value = '已經(jīng)到底了';
    } else {
        loadDataMesssage.value = '';
    }
};

到此這篇關(guān)于Element-plus表格數(shù)據(jù)延遲加載的文章就介紹到這了,更多相關(guān)Element-plus延遲加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue2?Element?description組件列合并詳解

    Vue2?Element?description組件列合并詳解

    在使用Vue的時(shí)候經(jīng)常會(huì)涉及到表格的列合并,下面這篇文章主要給大家介紹了給大家Vue2?Element?description組件列合并的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • vue中使用echarts的方法實(shí)例詳解

    vue中使用echarts的方法實(shí)例詳解

    這篇文章主要介紹了vue中使用echarts的方法,結(jié)合實(shí)例形式詳細(xì)分析了vue中使用echarts的包安裝、引入、生命周期函數(shù)元素掛載等相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2023-05-05
  • 利用vscode編寫(xiě)vue的簡(jiǎn)單配置詳解

    利用vscode編寫(xiě)vue的簡(jiǎn)單配置詳解

    這篇文章主要給大家介紹了利用vscode編寫(xiě)vue簡(jiǎn)單配置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • VUE3學(xué)習(xí)教程之全局組件和局部組件

    VUE3學(xué)習(xí)教程之全局組件和局部組件

    組件(Component)是Vue.js最強(qiáng)大的功能之一,組件可以擴(kuò)展?HTML?元素,封裝可重用的代碼,這篇文章主要給大家介紹了關(guān)于VUE3學(xué)習(xí)教程之全局組件和局部組件的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • vue3+ts出現(xiàn)白屏問(wèn)題的解決方法詳解

    vue3+ts出現(xiàn)白屏問(wèn)題的解決方法詳解

    這篇文章主要為大家詳細(xì)介紹了vue3+ts出現(xiàn)白屏問(wèn)題的原因與解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • vue實(shí)現(xiàn)一個(gè)懶加載的樹(shù)狀表格實(shí)例

    vue實(shí)現(xiàn)一個(gè)懶加載的樹(shù)狀表格實(shí)例

    這篇文章主要介紹了vue實(shí)現(xiàn)一個(gè)懶加載的樹(shù)狀表格實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Vue實(shí)現(xiàn)表格批量審核功能實(shí)例代碼

    Vue實(shí)現(xiàn)表格批量審核功能實(shí)例代碼

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)表格批量審核功能實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • vue2.x引入threejs的實(shí)例代碼

    vue2.x引入threejs的實(shí)例代碼

    這篇文章主要介紹了vue2.x引入threejs,如果在開(kāi)發(fā)過(guò)程中出現(xiàn)threejs生成的canvas出現(xiàn)外邊框,只需要用css樣式修改,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • vuecli+AXdownload下載組件封裝?+css3下載懸浮球動(dòng)畫(huà)效果

    vuecli+AXdownload下載組件封裝?+css3下載懸浮球動(dòng)畫(huà)效果

    當(dāng)觸發(fā)下載功能的時(shí)候,會(huì)觸發(fā)一個(gè)下載動(dòng)畫(huà),下載懸浮球會(huì)自動(dòng)彈出,并且閃爍提示有新的下載任務(wù)直到下載任務(wù)完場(chǎng)提示,接下來(lái)通過(guò)本文介紹vuecli+AXdownload下載組件封裝?+css3下載懸浮球動(dòng)畫(huà)效果,需要的朋友可以參考下
    2024-05-05
  • 一文帶你掌握?Vue3.5常用特性

    一文帶你掌握?Vue3.5常用特性

    Vue3.5?發(fā)布已近半年,這篇文章主要來(lái)和大家技術(shù)一下它常用的新增和改動(dòng)特性,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-01-01

最新評(píng)論