前端解决后端返回数据量过多且无法做分页导致页面卡死问题

后端返回的数据量很大,返回的数据还要做二次处理,无法做分页情况下前端需要做处理,否则会出现页面卡死问题,两种方式如下;

1. 拆分数据然后使用定时器依次赋值

// 使用定时器依次赋值
getData() {
   let twoDArr = this.dataHandleFun(this.Arr);
   // this.Arr 为原始数据
   for (let i = 0; i < twoDArr.length; i++) { setTimeout(() => {
        this.arr = [...this.arr, ...twoDArr[i]];
      }, 1000 * i);
    }
 }

// 数据截取方法(一秒加载 50 条数据)
dataHandleFun(arr) {
  let i = 0
  let result = []
  while (i < arr.length) {
    result.push(arr.slice(i, i + 50))
    i = i + 50
  }
  return result
}

这种方式相当于分解了大批量数据,一秒加载 50 条数据,减少了浏览器压力。

2. 使用组件 el-table-virtual-scroll

在 el-table 表格中要展示大批量数据且无法做分页,返回的数据还要进行二次处理,并且表格中还有下拉框及多选框操作,加载大量数据渲染的时候要加载非常久有可能浏览器还会崩溃,可以使用组件 el-table-virtual-scroll

安装插件

npm i el-table-virtual-scroll -S

具体代码实现:

<!--若 keyProp 未设置或 keyProp 值不唯一,可能导致表格空数据或者滚动时渲染的数据断层、不连贯、滚动不了-->
<!-- ArrData 为要展示的表格数据 -->
<virtual-scroll
  :data="ArrData"
  :item-size="62"
  key-prop="id"
  @change="renderData => virtualList = renderData">
<el-table
  :data="virtualList"
   border
   :span-method="objectSpanMethod">
   ...
</el-table>
</virtual-scroll>

import VirtualScroll from 'el-table-virtual-scroll'
import { VirtualColumn } from 'el-table-virtual-scroll'

这样就实现了在表格中数据量过多页面卡死问题了。

注意:表格中如果有合并单元格情况,需要添加配置 row-span-key 和 row-key :

<virtual-scroll
  :data="ArrData"
  :item-size="62"
  key-prop="id"
  :row-span-key="getRowSpanKey"
  @change="renderData => virtualList = renderData">
    <el-table
      :data="virtualList"
       border
       :span-method="objectSpanMethod"
       row-key="id">
         ...
    </el-table>
</virtual-scroll>

方法:

getRowSpanKey(row) {
  return row.id
},
// 合并表格方法
objectSpanMethod({row, column, rowIndex, columnIndex}) {
  if (columnIndex === 0) {
    if (row.rowspan) {
      return {
        rowspan: row.rowspan,
        colspan: 1
      }
    } else {
      return {
        rowspan: 0,
        colspan: 0
      }
    }
  }
}

以上就是关于前端解决后端返回数据量过多且无法做分页导致页面卡死问题的方法,希望对大家有用。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 前端解决后端返回数据量过多且无法做分页导致页面卡死问题

发表回复