首页 > 其他分享 >【React工作记录一百零一】再次接触老朋友react+ant design table合并单元格

【React工作记录一百零一】再次接触老朋友react+ant design table合并单元格

时间:2023-06-12 10:04:19浏览次数:38  
标签:零一 arr const 单元格 pageIndex ant length obj columns

前言

大家好 我是歌谣 今天继续开发一个需求 就是我们的大屏需求 今天让我们一步步 解决所遇到的问题

第一个功能 如何渲染

参照官网案例

const dataSource = [
  {
    key: '1',
    name: '胡彦斌',
    age: 32,
    address: '西湖区湖底公园1号',
  },
  {
    key: '2',
    name: '胡彦祖',
    age: 42,
    address: '西湖区湖底公园1号',
  },
];

const columns = [
  {
    title: '姓名',
    dataIndex: 'name',
    key: 'name',
  },
  {
    title: '年龄',
    dataIndex: 'age',
    key: 'age',
  },
  {
    title: '住址',
    dataIndex: 'address',
    key: 'address',
  },
];

<Table dataSource={dataSource} columns={columns} />;

当我们看完了这个基础案例以后 相信我们就已经清楚该定义数据格式了

最终数据格式

【React工作记录一百零一】再次接触老朋友react+ant design table合并单元格_Source

结果(解决)

第二个功能 如何合并

直接看全部代码 进行重点讲解

定义处理column哥的方法 加入render

const handleColumn = (columns) => {

    for (let i = 0; i < columns.length; i++) {
      if (columns[i]?.dataIndex == "cuttingName") {
        columns[i].render = data
      } else if (columns[i]?.dataIndex == "colorName") {
        columns[i].render = dataColor
      }
    }
    return columns
  }

datacolor处理合并逻辑

datacolor是一个函数 下面看我的定义

const dataColor = (value, row, index) => {
    const obj = {
      children: value,
      props: { rowSpan: 1 },
    }
    if (columns.length > 0) {
      return filterNumData(obj, dataSource, row, index, 'colorName')
    } else {
      return obj
    }
  }

if判断特别关键 不然刚刷新页面就会报错 因为render找不到对应属性

filterNumData处理合并逻辑核心

const filterNumData = (obj, arr, record, index, flag) => {
    let length = 0
    if (arr.length > 0) {
      for (let i = index; i < arr.length; i++) {
        if (i === arr.length - 1 && arr.length != 1) {
          if (arr[i - 1][`${flag}`] === record[`${flag}`]) {
            length += 1
            break
          }
        } else {
          if (arr[i][`${flag}`] === record[`${flag}`]) {
            length += 1
          } else {
            break
          }
        }
      }
    }

五个属性 我们分别讲解 obj 自己定义了 看如上 const obj = { children: value, props: { rowSpan: 1 }, } dataSource返回的数据
row render自带 index render自带 colorName 要合并的属性 最后重新setState columns 合并完成

【React工作记录一百零一】再次接触老朋友react+ant design table合并单元格_Source_02

第三个功能 如何通过定时器渲染

根据数据返回的条数进行累加 累加到最大条数置为0

useEffect(() => {
    const timer = setInterval(() => {
      if (pageIndex == total || pageIndex == 10) {
        setPageIndex(0)
      } else {
        setPageIndex(pageIndex + 1)
      }
    }, delay)
    return () => clearInterval(timer)
  }, [pageIndex, total])

通过接口的接口赋值 完成 pageIndex变化的时候重新调用接口

useEffect(() => {
    initMenuList();
  }, [pageIndex]);

【React工作记录一百零一】再次接触老朋友react+ant design table合并单元格_数据格式_03

第四个功能 增加合计

<Table dataSource={dataSource} columns={columns} pagination={false}  summary={data => {
                        let totalCount = 0;
                        return (
                            <>
                                <Table.Summary.Row>
                                    <Table.Summary.Cell index={0}>合计</Table.Summary.Cell>
                                    <Table.Summary.Cell index={1}>
                                    </Table.Summary.Cell>
                                    <Table.Summary.Cell index={2}>
                                    </Table.Summary.Cell>
                                    <Table.Summary.Cell index={3}>
                                    </Table.Summary.Cell>
                                    <Table.Summary.Cell index={4}>
                                        <span>{total}</span>
                                    </Table.Summary.Cell>
                                </Table.Summary.Row>
                            </>
                        );
                    }} />;
直接summary完成数据合计 对应再对应的值上面即可 继续接口返回

【React工作记录一百零一】再次接触老朋友react+ant design table合并单元格_Source_04

总结

以上就是真实项目中解决问题的思路和写法 我是歌谣 微信公众号关注前端小歌谣 带你进入强大的前端巅峰人才交流群

标签:零一,arr,const,单元格,pageIndex,ant,length,obj,columns
From: https://blog.51cto.com/u_14476028/6459701

相关文章

  • 「AntV」景点轨迹数据获取与L7可视化
    1.引言L7地理空间数据可视分析引擎是一种基于WebGL技术的地理空间数据可视化引擎,可以用于实现各种地理空间数据可视化应用。L7引擎支持多种数据源和数据格式,包括GeoJSON、CSV等,可以快速加载和渲染大规模地理空间数据。L7引擎还提供了丰富的可视化效果和交互功能,包括热力图......
  • 【React工作记录九十九】ant design mobile实现tab滚动效果和闪屏小记
    前言大家好我是歌谣今天继续给大家带来前端工作中遇到的实际性问题如何实现一个tab效果以及闪屏问题效果演示(tab滚动效果)案例遇到问题先去查api查百度一开始我以为是安卓的功能直接api打开<DemoBlocktitle='超长自动滚动'padding='0'><TabsdefaultActiveKey=......
  • English Learning Articles 2022-06-11 Your teen wants to get in shape this summer
    Yourteenwantstogetinshapethissummer?Whattosayandwhentoworry|CNN Ifyourchildrensaytheywanttostartexercisingorworkingoutmorethissummer,don’tcelebratejustyet.Iknowmostparentswouldbethrilledtoseetheirteenstakin......
  • react antd 表头分组渲染的问题记录
    importReact,{useEffect}from'react'import{observer}from'mobx-react'import{get}from'lodash'import{Modal}from'antd'importSelfTablefrom'@/view/common/self_table/self-table'impo......
  • 2 视觉设计 美化单元格
    如何为你的数据选择格式使用字体来标明什么是最重要的单元格样式使得重复的要素保特一致的格式选择要使用的单元格样式后,继续使用主题来改变电子表格外观......
  • 「AntV」路网数据获取与L7可视化
    1.引言L7地理空间数据可视分析引擎是一种基于WebGL技术的地理空间数据可视化引擎,可以用于实现各种地理空间数据可视化应用。L7引擎支持多种数据源和数据格式,包括GeoJSON、CSV等,可以快速加载和渲染大规模地理空间数据。L7引擎还提供了丰富的可视化效果和交互功能,包括热力图......
  • 使用Python获取Excel文件中单元格公式的计算结果
    假设有如下Excel文件,其中第二个WorkSheet中数据如下:其中D列为公式,现在要求输出该列公式计算的数值结果,代码如下:代码运行结果:......
  • 给第一行单元格赋值 + WPS JS获取工作表的总行数 + WPS JS获取工作表的总行数
    戳我,了解更多相关办公的小技巧给第一行单元格赋值1、在计算机中有一种ASCII编码,其中A在计算机中的表示的数字是65,a的ascii码是97,b的ascii码是98。2、从A1到F1可以看到第一个字母在变化,第2个数字始终是1,A的ascii码是65,F的ascii码是70。3、我们定义letter=65,使letter逐渐靠......
  • Python批量拆分Excel文件中已合并的单元格
    目录(二级)第1章 基础知识/1  1.1 如何选择Python版本  1.2 Python安装与简单使用  1.3 使用pip管理扩展库  1.4 Python基础知识  1.5 Python代码编写规范  1.6 Python文件名  1.7 Python程序的__name__属性  1.8 编写自己的包 ......
  • ABAP——多表头ALV(单元格合并)
    参考:https://tricktresor.de/blog/zellen-verbinden效果:按照参考链接建立类ZCL_GUI_ALV_GRID:类方法ZCL_GUI_ALV_GRID~Z_SET_MERGE_HORIZMETHODZ_SET_MERGE_HORIZ.*ROW-ZeilederenSpaltenzusammengef�hrtwerdensollen*tab_col_merge-Spalten,diezusammen......