码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【React】Table表头纵向展示


    默认表格展示:
    在这里插入图片描述
    展示目标:
    在这里插入图片描述


    环境

    • antd: ^5.14.1
    • react: ^18

    拟定数据

    - columns

    const columns = [
      {
        title: "品牌",
        dataIndex: "brand",
        key: "brand",
        width: 100,
      },
      {
        title: "Star",
        dataIndex: "star",
        key: "star",
        width: 100,
      }
    ];
    

    - dataSource

    const dataSource = [
      {
        key: "1",
        brand: "logitech",
        star: 4.3
      },
      {
        key: "2",
        brand: "NexiGo",
        star: 3.1
      },
      {
        key: "3",
        brand: "logitech2",
        star: 4.3
      },
      {
        key: "4",
        brand: "NexiGo2",
        star: 3.1
      },
      {
        key: "5",
        brand: "NexiGo3",
        star: 3.1
      },
      {
        key: "6",
        brand: "NexiGo4",
        star: 3.1
      },
      {
        key: "7",
        brand: "NexiGo5",
        star: 3.1
      },
      {
        key: "8",
        brand: "NexiGo6",
        star: 3.1
      },
    ];
    

    测试组件

    import type { TableProps } from "antd";
    
    import { useEffect, useState } from "react";
    import { Table } from "antd";
    import { transformData } from "./unit";
    
    type Props = {
      dataSource: any[];
      columns: string[];
    };
    
    export const TestTable = function (props: Props) {
      const [tableList, setTableList] = useState<any>([]);
      const [tableColumns, setTableColumns] = useState<any[]>([]);
    
      useEffect(() => {
        const { columns, data } = transformData(props.dataSource);
    
        setTableColumns(columns)
        setTableList(data);
      }, []);
    
    
      return (
        <Table
           columns={tableColumns}
           dataSource={tableList}
           bordered
           scroll={{ x: "100%", y: "auto" }}
           showHeader={true}
           pagination={false}
         />
      );
    };
    
    export default TestTable;
    
    

    数据转换:

    // file: ./unit.ts
    export function transformData(originalData: any[]) {
      let keys = Object.keys(originalData[0]).filter((key) => key !== "key");
      let columns = [{ title: "first", dataIndex: "first", key: "first" }];
    
      originalData.forEach((key, index) => {
        columns.push({
          title: `col${index + 1}`,
          dataIndex: `col${index + 1}`,
          key: `col${index + 1}`,
        });
      });
    
      let transformedData = keys.map((key, index) => {
        let rowData: any = { key: `${index + 1}` };
        originalData.forEach((item, idx) => {
          rowData[`col${idx + 1}`] = item[key];
        });
        rowData.first = key;
        return rowData;
      });
    
      return { columns, data: transformedData };
    }
    
  • 相关阅读:
    自定义Django-admin管理命令
    UBI文件系统的使用
    【云原生】设备云之Fcloud云组态第三方服务
    【Linux】linux | 生产事故 | openssl升级导致ssh无法连接
    华为云云耀云服务器L实例评测|云耀云服务器L实例部署DjangoBlog个人博客系统
    C语言——九九乘法表
    Android设计模式--策略模式
    自动驾驶开源数据集汇总
    抖音小店“自然流量”和“达人带货”有什么区别?谁更适合新手?
    学生信息管理系统(JAVA+MYSQL)
  • 原文地址:https://blog.csdn.net/u011159821/article/details/139774716
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号