本文介绍: 1.场景描述发起请求获取上万条数据,进行表格渲染,使浏览器卡顿,导致网页崩溃。2.分析原因1.大量数据加载,过多操作Dom,消耗性能。2.表格包含其他控件,增加渲染负担。

如果可以实现记得点赞分享,谢谢老铁~

1.场景描述

发起请求获取上万条数据,进行表格渲染,使浏览器卡顿,导致网页崩溃
在这里插入图片描述

2.分析原因

1.大量数据加载,过多操作Dom,消耗性能
2.表格中包含其他控件,增加渲染负担。

3.解决思路

  1. 将表格中的控件提取为子组件,因为vue中的render独立渲染的。
    table中的单个控件
  const columns: ColumnsType<any> = [
    {
      title: "经度",
      dataIndex: "lon",
      align: "center",
      render: (value, record) => (
        <InputNumberCon value={value} blurEvent={onBlur} type="lon"></InputNumberCon>
      ),
    },
  ]

2.InputNumberCon组件

import React from 'react';
import {
    InputNumber,
} from "antd";


interface Props {
    type: string;
    value: number | null;
    blurEvent: (event: any, data: any, type: string) => void;
}
function InputNumberCon({ value, type, blurEvent }: Props) {
    return (
        <div>
            <InputNumber
                defaultValue={value}
                onBlur={(e) =&gt; blurEvent &amp;&amp; blurEvent(e, record, type)}
                controls={false}
            /&gt;
        </div>
    );
}

export default InputNumberCon;

2.采用分页方式大数据进行分批渲染处理

<Table
        size="small"
        id="sortTable"
        className="sortTableBox"
        pagination={{
          defaultPageSize: pageSize,
          position: ["bottomLeft"],
          current,
          onChange: changePage
        }}
        dataSource={dataSource}
        columns={columns}
        rowKey="index"
        scroll={{ y: '180px', scrollToFirstRowOnChange: true }}
        components={{
          body: {
            wrapper: DraggableContainer,
            row: DraggableBodyRow,
          },
        }}
      />

3.如以上两种还无法满足,请更换解决方案采用虚拟高度处理代表组件vuxtable

安装:官网

【1】安装依赖
npm install xe-utils vxe-table

【2】看官网例子即可

PS:虚拟滚动最大可以支撑 10w 列、30w 行)
高性能虚拟渲染设置 scrollx={ enabled, gt } | scroll-y={ enabled, gt } 和 heightmaxheight开启虚拟滚动, 会根据触发规则 gt 来启用虚拟渲染。虚拟滚动启用后只会渲染指定范围内的可视数据,其他的数据将被卷去收起,当滚动可视区时才被渲染出来
(注:启用虚拟滚动后:showoverflowshowheaderoverflowshowfooteroverflow 参数将根据不同场景各自触发生效,无法取消;如果需要支持,需将虚拟滚动关闭
性能优化:横向虚拟滚动由列宽决定性能,每一列的列宽越大就越流畅;纵向虚拟滚动由行高决定性能,每一行高度越高就越流畅
v4.5+默认关闭虚拟滚动,需手动 enabled 开启或者 setup 全局开启

OK,收工!如果可以实现记得点赞分享,谢谢老铁~

原文地址:https://blog.csdn.net/Gas_station/article/details/134731371

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_49821.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注