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

AI 概述
后端返回的数据量很大,返回的数据还要做二次处理,无法做分页情况下前端需要做处理,否则会出现页面卡死问题,两种方式如下; 1. 拆分数据然后使用定时器依次赋值 // 使用定时器依次赋值 getData() { let twoDArr = this.dataHandleFun(this.Arr); // this.Arr 为原始数据 for (let i = 0; i < twoDArr...

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

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抓紧创作!

微信微信 支付宝支付宝

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

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 前端解决后端返回数据量过多且无法做分页导致页面卡死问题

发表回复