当前位置: 首页 > news >正文

antd的表格组件错乱问题

环境

react:17.0.2

antd:3.26.20

问题

表格头列宽度和表格体列宽度不一致,表格错乱

解决

针对这个问题官方github仓库里面有专门的issues

https://github.com/ant-design/ant-design/issues/13825

里面给出了几种解决方案:

  1. columns设置中加上固定宽度

    const columns = [{title: "Name",dataIndex: "name",width: 200,},{title: "Address",dataIndex: "address",width:200,}
    ];
    

    这种解决方案成功概率很低,基本是无用的,因为我遇到问题时都设置了固定宽度

  2. 设置长数字和长单词换行,与ellipsis配置结合

    columns={[{...textWrap: 'word-break',ellipsis: true,
    }]}
    

    在 3.24.0 之前,你需要针对超长字段的列增加折断样式:

    columns={[{...render: (text, record) => (<div style={{ wordWrap: 'break-word', wordBreak: 'break-word' }}>{text}</div>),
    }]}
    

    尝试上面的方案进行处理之后仍然没有解决问题

  3. 重置表格样式

    .ant-table-fixed {table-layout: fixed;
    }
    .ant-table-tbody > tr > td {word-wrap: break-word;word-break: break-all;
    }
    

    最后尝试也没成功,看来还是要靠自己

分析

出现问题的列,设置了ellipsis,会有不换行的样式,数据又出现非常长的,导致表格行被撑大了(只有表格体部分变大,表格头没变,出现了错乱),虽然表格列设置了宽度,审查元素也能看到表格头部分设置了宽度(在表格体部分单独的table标签),但是宽度并不能限制住不换行的长内容撑开盒子,所以问题的关键是限制住表格体那一列的宽度。

限制宽度可以使用max-width,那么给出现问题的列增加max-width样式就可以解决问题

  1. 增加className

    columns={[{...width: 150,className: 'limit-width',
    }]}
    
    .limit-width {max-width: 150px;
    }
    
  2. 设置行内样式

    columns={[{...width: 150,onCell: () => {return {style: {maxWidth: 150,}}},
    }]}
    

彩蛋

一维数组转化成树形结构的低复杂度方法

一般情况下一维数组转化成树形结构会采取递归方法,这种方法好理解,但是当这个一维数组特别庞大时,就会导致内存溢出。下面方法可以解决

export function generateTree(flatArr) {const tree = [];const map = new Map();// 将所有节点存储到map中flatArr.forEach((node) => {map.set(node.id, node)});// 遍历所有节点,将其添加到对应的父节点下flatArr.forEach((node) => {const parent = map.get(node.parentId);// 存在父节点,添加在父节点的childrenif (parent) {if (parent.children) {parent.children.push(node);} else {parent.children = [node];}} else {// 不存在父节点,说明是顶层节点tree.push(node);}});return tree;
}

在这里插入图片描述

相关文章:

  • 2024 年最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
  • [论文笔记]Are Large Language Models All You Need for Task-Oriented Dialogue?
  • STM32Cube系列教程11:STM32 AES加解密模块性能测试
  • Jackson指定json的key
  • NSNumber转float或double类型避免小数点后补0
  • Vue50-mixin混入
  • Mariadb/MySQL挂了且重启失败
  • 学习笔记——网络管理与运维——SNMP(基本配置)
  • 有没有和ai聊天的软件?介绍这三款聊天软件
  • rnn定义(rnn批次,核心思想理解)循环神经网络(递归)
  • 「6.18福利」精选大厂真题|笔试刷题陪伴|明天正式开屋啦 - 打卡赢价值288元丰厚奖励
  • SQLite 日期 时间
  • 跟TED演讲学英文:Entertainment is getting an AI upgrade by Kylan Gibbs
  • Ollama:本地部署大模型 + LobeChat:聊天界面 = 自己的ChatGPT
  • 时区设置函数【man 3 tzset】
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • android图片蒙层
  • avalon2.2的VM生成过程
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • iOS小技巧之UIImagePickerController实现头像选择
  • java概述
  • node-glob通配符
  • opencv python Meanshift 和 Camshift
  • oschina
  • python 装饰器(一)
  • React Transition Group -- Transition 组件
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 技术发展面试
  • 坑!为什么View.startAnimation不起作用?
  • 爬虫模拟登陆 SegmentFault
  • 实习面试笔记
  • 如何正确理解,内页权重高于首页?
  • ​如何防止网络攻击?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ###项目技术发展史
  • #565. 查找之大编号
  • #LLM入门|Prompt#3.3_存储_Memory
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (1)常见O(n^2)排序算法解析
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .FileZilla的使用和主动模式被动模式介绍
  • .Net core 6.0 升8.0
  • .Net mvc总结
  • .NET 直连SAP HANA数据库
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET命令行(CLI)常用命令
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .Net中的设计模式——Factory Method模式