Antd表格性能优化

news2024/7/4 4:45:03

今天来分享一个实际项目的性能优化的内容。

文章目录

  • 一、背景介绍
  • 二、性能问题原因及解决方案

一、背景介绍

国内React项目大多数人选择配套的UI库的时候都会选择Antd。如果是非常简单的页面用Antd的话其实是完全没问题的,性能感觉不到什么瓶颈,样式也还是非常好看的。

但如果数据量大起来了的话,其实就会暴露出来问题了。
如下图一个实际项目,下面的可编辑表格里面的数据量大概在四千左右,这个时候就出现了比较严重的性能问题是需要解决的。
尤其是这个页面做了多人协同操作的功能,性能对于这个页面来讲是非常重要的,否则别人一个操作可能会导致我这边卡顿就是用户不可以接受的了

在这里插入图片描述

二、性能问题原因及解决方案

通过 控制台的 Performance 里面的内容得知到了:
发现Antd的table竟然给每一个单元格都设置了鼠标移入移出事件,那我们就去把他给干掉。

只写了关键代码

import React, { useMemo } from 'react';
import { Form, Table } from 'antd';
import { VList } from 'virtuallist-antd';

// 自定义td
const TdCell = (props) => {
  // onMouseEnter, onMouseLeave在数据量多的时候,会严重阻塞表格单元格渲染,严重影响性能
  const { onMouseEnter, onMouseLeave, ...restProps } = props;
  return <td key={restProps?.key} {...restProps} />;
};
function Index(props) {
  const components = useMemo(() => {
    // 如果你不用虚拟列表的话可以把这里删掉,直接return一个对象包含body.cell
    const vRes = VList({ height: 600 });
    vRes.body.cell = TdCell;
    return vRes;
  }, []);
  return (
	<Table
       rowKey="id"
       dataSource={[]}
       columns={[]}
       rowClassName="editable-row"
       pagination={false}
       scroll={{ x: '100%', y: 600 }}
       components={components}
       sticky
     />
  )
}

PS:数据量越大,这个代码收益越明显

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/5242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络

目录 介绍 组成部分 工作方式 功能组成 网络范围分类 传输技术&#xff1a; 总结 标准化工作 RFC文档的作用&#xff1a; 速率&#xff0c;带宽 有容量和速率的区别 带宽 吞吐量 时延&#xff0c;时延带宽积 1.发送时延&#xff1a; 2.传播时延&#xff1a; ​编辑 3.…

Vant组件库 引入 阿里矢量图 添加自己喜欢的 ICON

&#x1f4c3;目录跳转一.矢量图下载&#x1f4a8;使用CDN方式&#x1f389;下载本地&#xff08;推荐&#xff09;二.Vant引入Icon&#x1f5fa;️&#x1f383; 使用方式&#x1f680; 运行效果&#xff1a;一.矢量图下载 &#x1f4a8;使用CDN方式 当然你也可以使用官方的C…

【编程题】【Scratch三级】2021.12 分身术

分身术 1. 准备工作 (1)删除小猫角色、添加角色“Monkey”,Money位于舞台的中心; (2)添加背景Light; (3)新建变量“编号”。 2. 功能实现 (1)程序开始时,Monkey说:“我会分身术!变!!!”2秒; (2)每隔2秒克隆出一个位置随机、大小随机、颜色随机的Monke…

python easygui修改窗口位置

EasyGui是一个十分简单的Python图形界面库&#xff0c;支持窗口文本显示、图片显示、按钮、文本框、选项栏、文件选择等等必要的组件且操作十分简单。但也因如此&#xff0c;导致EasyGui甚至不能手动调整窗口位置、按钮位置、名字等&#xff0c;因为EasyGui是基于Tkinter编写的…

VMware三种网络模式详解

VMware三种网络模式 linux重启网络服务命令&#xff1a; service network restart 一、桥接模式 原理&#xff1a;VMware和宿主机&#xff0c;处于同一网段、两者地位平等。&#xff08;无需虚拟网卡&#xff09; 1.1、使用方法 虚拟网络编辑器 虚拟机设置-适配器 上面两…

<Linux> 编译器与调试器—gcc/g++/gdb 的使用

< Linux > 编译器与调试器—gcc/g/gdb 的使用 文章目录< Linux > 编译器与调试器—gcc/g/gdb 的使用一、Linux编译器 - gcc/g 使用1. 编译程序的四个过程背景知识预处理编译汇编链接2. 链接方式与函数库2.1 动态链接与静态链接2.2.函数库2.3.动态库与静态库3. gcc/…

干货分享:谷歌主动搜索开发客户的万能公式

大家在用谷歌(Google)开发是不是也有以下常见问题&#xff1a; 关键词不准&#xff0c;搜索到的都是零售商&#xff0c;B2C平台搜索到的客户太大&#xff0c;已经被开发多次&#xff0c;开发信不回复搜索到的客户找不到邮箱搜索到的客户与工厂不匹配&#xff0c;无法合作 其实…

车路协同 智能路侧设备网络安全接入技术要求

1 范围 本文件包含智能路侧设备网络安全接入技术要求&#xff0c;包括智能路侧设备连接要求、接入要求、证书管理要求。 本文件适用于智能路侧设备网络安全接入的设计与开发。 2 规范性引用文件 下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中&…

Simulink永磁同步电机控制仿真:过调制及电流重构

在一些高功率密度的应用场景中&#xff0c;追求极致的电压利用率&#xff0c;这个时候要用到过调制技术&#xff1b;当svpwm工作在过调制区域时&#xff0c;逆变电桥会在一个基波周期内多次达到100%占空比&#xff0c;且较多时间处于较高的占空比&#xff0c;这个时候下桥臂电流…

数据结构系列学习(七) - 链栈(Chain_Stack)

目录 引言&#xff1a; 学习&#xff1a; 代码实现&#xff1a; 头文件&#xff08;Chain_Stack.h&#xff09;&#xff1a; 设置链栈中的元素范型&#xff1a; 链栈的结构体设计&#xff1a; 所有功能函数的声明&#xff1a; 源文件&#xff08;Chain_Stack.cpp&#…

性能测试场景设计之 阶梯性能场景(负载测试场景)

「负载测试&#xff1a;」 逐步增加并发用户数。看服务器的最大拐点区间在哪里。再缩小拐点区间&#xff0c;找出最大并发用户数。 使用方式&#xff1a; 安装 jpgc插件 添加线程组 每次递增10个并发 This group will start&#xff1a;给定当前负载的并发用户数First, wait …

机器学习-集成算法

文章目录集成算法1. 定义2. 具体模型2.1. Bagging2.2. Boosting2.3. Stacking3. 随机森林3.1. 树模型结构3.2. 随机森林的优点3.3. 分类与回归问题3.4. 树模型个数问题3.5. 参数问题(特征重要性)3.6. 可视化展示问题4. 集成基本思想4.1. 硬投票策略步骤4.2. 软投票策略步骤5. B…

【SpringMVC】基础、环境搭建、注解搭建、 and so on……

文章目录SpringMVC【原理】&#xff1a;一、why?&#xff1a;二、环境搭建&#xff08;配置方式&#xff09;&#xff1a;▶1.导入jar包▶2.创建简单测试----创建Controller类继承AbstractController▶3.如何读取Controller文件&#xff0c;创建SpringMVC.xml配置文件&#xf…

使用SPACEDESK时iPad显示Connected-Display OFF解决方法

使用SPACEDESK时iPad显示Connected-Display OFF1. SPACEDESK 概述2. 使用SPACEDESK时iPad显示Connected-Display OFF解决方法结束语1. SPACEDESK 概述 SPACEDESK 是一款网络显示多显示器软件&#xff0c;适用于电脑桌面复制&#xff08;镜像或克隆&#xff09;&#xff0c;能将…

[附源码]java毕业设计代驾服务系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

初识C语言

初识C语言什么是C语言&#xff1a;环境配置&#xff08;VS2019介绍&#xff09;&#xff1a;你的第一个C语言程序常量与变量变量的分类局部变量与全局变量的对比变量的使用&#xff1a;变量的作用域和生命周期&#xff08;重要&#xff09;生命周期常量字符串转义字符注释转义字…

章节1 计算机体系结构

1.2.1-计算机硬件组成-CPU 计算机组成 台式机硬件-内部 台式机硬件-外部结构 CPU Center Processing Unit&#xff08;中央处理器/处理器&#xff09; 常见的电脑处理器&#xff1a; Inetl奔腾8086、酷睿i5 i7 i9&#xff1b;AMD 锐龙 常见的手机处理器&#xff1a; 高通…

SOT-23和SOT-223三极管及MOS管封装区别以及示意图

SOT23封装 三极管 三极管为SOT23封装时&#xff0c;无论是NPN还是PNP。 引脚分布1脚为基极(B)&#xff0c;2脚为发射极(E)&#xff0c;3脚为集电极©。 NPN PNP MOS管 MOS管为SOT23封装时&#xff0c;无论是N-MOS还是P-MOS。 引脚分布1脚为栅极(G)&#xff0c;2脚为源极(S…

Vue3树形控件实现跳转页面

今天想分享的是Vue3中利用element-plus中的树形控件实现跳转页面&#xff0c;做成类似标签页tabs一样的效果。 1、什么是树形控件 树形控件即可以展现层级结构&#xff0c;可以清晰的看到什么需求在哪个项目下&#xff0c;如下图所示 树形控件直通车 2、分析树形控件的基本…

cspj2022 T4 上升点列(point)题解(floyd)

样例一&#xff1a; 8 2 3 1 3 2 3 3 3 6 1 2 2 2 5 5 5 3 样例一输出&#xff1a; 8 样例二&#xff1a; 4 100 10 10 15 25 20 20 30 30 样例二输出&#xff1a; 103 一、题目解析&#xff1a; 平面上有若干个点&#xff0c;若点[i]可以沿着x或y增加方向移动达到点[j…