分组表格antd+ react +ts

import React from "react";
import { Table, Tag } from "antd";
import styles from "./index.less";
import GroupTag from "../Tag";
const GroupTable = () => {const columns = [{title: "姓名",dataIndex: "name",key: "name",render: (text, record) => customRowRender(record, <a>{text}</a>),/* 合并单元格列 */onCell: (record) => {if (record.isGroupTag) {return {colSpan: 5,};}},},{title: "性别",dataIndex: "gender",key: "gender",render: (text) => text && (text === 0 ? "男" : "女"),/* 合并单元格列 */onCell: (record) => {if (record.isGroupTag) {return {colSpan: 0,};}},},{title: "年龄",dataIndex: "age",key: "age",/* 合并单元格列 */onCell: (record) => {if (record.isGroupTag) {return {colSpan: 0,};}},},{title: "地址",dataIndex: "address",key: "address",/* 合并单元格列 */onCell: (record) => {if (record.isGroupTag) {return {colSpan: 0,};}},},{title: "出生日期",key: "birthday",dataIndex: "birthday",/* 合并单元格列 */onCell: (record) => {if (record.isGroupTag) {return {colSpan: 0,};}},},];const data = [{key: "1",title: "家人",tagColor: "rgba(10, 196, 72, 1)",data: [{key: "1",name: "张三",gender: 0,age: 32,address: "浙江省杭州市余杭区五常街道幸福小区3幢1单元202室",birthday: "1991-03-04",},{key: "2",name: "李四",gender: 1,age: 19,address: "浙江省杭州市余杭区五常街道幸福小区5幢2单元301室",birthday: "2004-01-26",},{key: "3",name: "王五",gender: 0,age: 26,address: "浙江省杭州市余杭区五常街道幸福小区7幢3单元503室",birthday: "1997-10-17",},],},{key: "2",title: "朋友",tagColor: "rgba(34, 139, 34, 1)",data: [{key: "4",name: "张三",gender: 0,age: 32,address: "浙江省杭州市余杭区五常街道幸福小区3幢1单元202室",birthday: "1991-03-04",},{key: "5",name: "李四",gender: 1,age: 19,address: "浙江省杭州市余杭区五常街道幸福小区5幢2单元301室",birthday: "2004-01-26",},{key: "6",name: "王五",gender: 0,age: 26,address: "浙江省杭州市余杭区五常街道幸福小区7幢3单元503室",birthday: "1997-10-17",},],},{key: "3",title: "同事",tagColor: "rgba(255, 173, 10, 1)",data: [{key: "7",name: "张三",gender: 0,age: 32,address: "浙江省杭州市余杭区五常街道幸福小区3幢1单元202室",birthday: "1991-03-04",},{key: "8",name: "李四",gender: 1,age: 19,address: "浙江省杭州市余杭区五常街道幸福小区5幢2单元301室",birthday: "2004-01-26",},{key: "9",name: "王五",gender: 0,age: 26,address: "浙江省杭州市余杭区五常街道幸福小区7幢3单元503室",birthday: "1997-10-17",},],},] as any;const tableData = data.flatMap((group) => [{key: `${group.key}-tag`,groupTag: group.title,tagColor: group.tagColor,isGroupTag: true,},...group.data.map((item) => ({ ...item, group })),]);const customRowRender = (record, children) => {console.log(record, "???");if (record.isGroupTag) {return {children: (<td colSpan={columns.length}><GroupTag color={record.tagColor} text={record.groupTag} />{/* <Tag color={record.tagColor}>{record.groupTag}</Tag> */}</td>),props: {colSpan: columns.length,},};}return children;};return (<div><Tablecolumns={columns}dataSource={tableData}pagination={false}rowKey={(record) => record.key}rowClassName={(record) => (record.isGroupTag ? styles.groupTagRow : "")}/></div>);
};export default GroupTable;
.groupTagRow {:global {td.ant-table-cell {padding:12px 0px 0px 0px  !important;border: unset !important;}}
}

效果
在这里插入图片描述

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

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

相关文章

【JAVA实战】如何使用 Apache POI 在 Java 中写入 Excel 文件

大家好&#xff01;&#x1f31f; 在这篇文章中&#xff0c;我们将带你深入学习如何使用 Apache POI 在 Java 中编写 Excel 文件的技巧&#xff01;&#x1f4ca;&#x1f4da; 如果你是 Java 开发者&#xff0c;或者正在探索如何处理 Excel 文件的数据&#xff0c;那么这篇文章…

使用Avalonia UI实现DataGrid

1.Avalonia中的DataGrid的使用 DataGrid 是客户端 UI 中一个非常重要的控件。在 Avalonia 中&#xff0c;DataGrid 是一个独立的包 Avalonia.Controls.DataGrid&#xff0c;因此需要单独通过 NuGet 安装。接下来&#xff0c;将介绍如何安装和使用 DataGrid 控件。 2.安装 Dat…

Spring Bean实例化过程

Spring Bean 的生命周期管理是 Spring IOC 的核心功能之一。Bean 生命周期从实例化、依赖注入、初始化、销毁等各个阶段的源码分析,有助于深入理解 Spring 容器的工作原理,特别是在复杂应用中的应用和定制化。 本文将详细分析 Spring Bean 的生命周期,并通过源码分析每个阶…

C#分页思路:双列表数据组合返回设计思路

一、应用场景 需要分页查询&#xff08;并非全表查载入物理内存再筛选&#xff09;&#xff0c;返回列表1和列表2叠加的数据时 二、实现方式 列表1必查&#xff0c;列表2根据列表1的查询结果决定列表2的分页查询参数 三、示意图及其实现代码 1.示意图 黄色代表list1的数据&a…

【Linux】磁盘

没有被打开的文件 文件在磁盘中的存储 认识磁盘 磁盘的存储构成 磁盘的效率 与磁头运动频率有关。 磁盘的逻辑结构 把一面展开成线性。 通过扇区的下标编号可以推算出在磁盘的位置。 磁盘的寄存器 控制寄存器&#xff1a;负责告诉磁盘是读还是写。 数据寄存器&#xff1a;给…

waitpid使用

waitpid 是 Unix/Linux 系统中用于等待子进程状态变化的系统调用。它允许父进程挂起执行&#xff0c;直到指定的子进程终止或者发生了其他指定的状态变化。 waitpid 的语法 pid_t waitpid(pid_t pid, int *status, int options); pid: 要等待的子进程的进程 ID&#xff0c;特殊…

网站结构优化:加速搜索引擎收录的关键

本文来自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/9.html 网站结构优化对于加速搜索引擎收录至关重要。以下是一些关键策略&#xff0c;旨在通过优化网站结构来提高搜索引擎的抓取效率和收录速度&#xff1a; 一、合理规划网站架构 采用扁…

第13章 深入volatile关键字(Java高并发编程详解:多线程与系统设计)

1.并发编程的三个重要特性 并发编程有三个至关重要的特性&#xff0c;分别是原子性、有序性和可见性 1.1 原子性 所谓原子性是指在一次的操作或者多次操作中&#xff0c;要么所有的操作全部都得到了执行并 且不会受到任何因素的干扰而中断&#xff0c;要么所有的操作都不执行…

记录 | Docker的windows版安装

目录 前言一、1.1 打开“启用或关闭Windows功能”1.2 安装“WSL”方式1&#xff1a;命令行下载方式2&#xff1a;离线包下载 二、Docker Desktop更新时间 前言 参考文章&#xff1a;Windows Subsystem for Linux——解决WSL更新速度慢的方案 参考视频&#xff1a;一个视频解决D…

PySide(PyQT)进行SQLite数据库编辑和前端展示的基本操作

以SQLite数据库为例&#xff0c;学习数据库的基本操作&#xff0c;使用QSql模块查询、编辑数据并在前端展示。 SQLite数据库的基础知识&#xff1a; https://blog.csdn.net/xulibo5828/category_12785993.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId1278…

【算法学习笔记】36:中国剩余定理(Chinese Remainder Theorem)求解线性同余方程组

中国剩余定理 假定存在 m 1 . . m k m_1..m_k m1​..mk​两两互质&#xff0c;中国剩余定理旨在求解这样的线性同余方程组中的 x x x&#xff1a; x ≡ a 1 ( m o d m 1 ) x ≡ a 2 ( m o d m 2 ) . . . x ≡ a k ( m o d m k ) x \equiv a_1~(mod~m_1) \\ x \equiv a_2~(mod…

stack 和 queue容器的介绍和使用

1.stack的介绍 1.1stack容器的介绍 stack容器的基本特征和功能我们在数据结构篇就已经详细介绍了&#xff0c;还不了解的uu&#xff0c; 可以移步去看这篇博客哟&#xff1a; 数据结构-栈数据结构-队列 简单回顾一下&#xff0c;重要的概念其实就是后进先出&#xff0c;栈在…

JUC--ConcurrentHashMap底层原理

ConcurrentHashMap底层原理 ConcurrentHashMapJDK1.7底层结构线程安全底层具体实现 JDK1.8底层结构线程安全底层具体实现 总结JDK 1.7 和 JDK 1.8实现有什么不同&#xff1f;ConcurrentHashMap 中的 CAS 应用 ConcurrentHashMap ConcurrentHashMap 是一种线程安全的高效Map集合…

C++17 std::variant 详解:概念、用法和实现细节

文章目录 简介基本概念定义和使用std::variant与传统联合体union的区别 多类型值存储示例初始化修改判断variant中对应类型是否有值获取std::variant中的值获取当前使用的type在variant声明中的索引 访问std::variant中的值使用std::get使用std::get_if 错误处理和访问未初始化…

计算机网络__基础知识问答

Question: 1&#xff09;在计算机网络的5层结构中&#xff0c;每一层的功能大概是什么&#xff1f; 2&#xff09;交换机的功能&#xff1f;https://www.bilibili.com/video/BV1na4y1L7Ev 3&#xff09;路由器的功能&#xff1f;https://www.bilibili.com/video/BV1hv411k7n…

NLP自然语言处理通识

目录 ELMO 一、ELMo的核心设计理念 1. 静态词向量的局限性 2. 动态上下文嵌入的核心思想 3. 层次化特征提取 1. 双向语言模型&#xff08;BiLM&#xff09; 2. 多层LSTM的层次化表示 三、ELMo的运行过程 1. 预训练阶段 2. 下游任务微调 四、ELMo的突破与局限性 1. 技术突破 2. …

在做题中学习(82):最小覆盖子串

解法&#xff1a;同向双指针——>滑动窗口 思路&#xff1a;题目要求找到s里包含t所有字符的最小子串&#xff0c;这就需要记录在s中每次查找并扩大范围时所包含进去的字符种类是否和t的相同&#xff0c;并且&#xff1a;题目提示t中会有重复字符&#xff0c;因此不能简单认…

JavaScript逆向高阶指南:突破基础,掌握核心逆向技术

JavaScript逆向高阶指南&#xff1a;突破基础&#xff0c;掌握核心逆向技术 JavaScript逆向工程是Web开发者和安全分析师的核心竞争力。无论是解析混淆代码、分析压缩脚本&#xff0c;还是逆向Web应用架构&#xff0c;掌握高阶逆向技术都将助您深入理解复杂JavaScript逻辑。本…

【deepseek】deepseek-r1本地部署-第二步:huggingface.co替换为hf-mirror.com国内镜像

一、背景 由于国际镜像国内无法直接访问&#xff0c;会导致搜索模型时加载失败&#xff0c;如下&#xff1a; 因此需将国际地址替换为国内镜像地址。 二、操作 1、使用vscode打开下载路径 2、全局地址替换 关键字 huggingface.co 替换为 hf-mirror.com 注意&#xff1a;务…

DeepSeek:突破传统的AI算法与下载排行分析

DeepSeek的AI算法突破DeepSeek相较于OpenAI以及其它平台的性能对比DeepSeek的下载排行分析&#xff08;截止2025/1/28 AI人工智能相关DeepSeek甚至一度被推上了搜索&#xff09;未来发展趋势总结 在人工智能技术飞速发展的当下&#xff0c;搜索引擎市场也迎来了新的变革。DeepS…