给antd的Table组件添加总计和平均值

7 篇文章 0 订阅

前言

遇到一个需求,应该挺常见但是我却没怎么遇到,也费了不少功夫也解决,记录一下。

需求很简单,是个后台管理系统项目,要做个表格,(什么,这么简单,直接组件库里面复制一下Tabel不就完事了) 哈哈,起初我也是这么想的,项目用的是react + antd。所以是有现成的Table的。但是遇到的还稍微复杂一点,最下面两行是不同于其他的数据,看下图

在这里插入图片描述

所以难点就是:最后两行是自定义的,显示总计和评价值

实现思路

翻了一圈antd的文档,发现并没有自定义底部的配置,只有自定义表头,就在我准备放弃,跟产品说实现不了的时候,突然发现了Column的配置项里面的render属性,里面是这样介绍的:

生成复杂数据的渲染函数,参数分别为当前行的值,当前行数据,行索引,@return 里面可以设置表格行/列合并

额,咋一看好像也不符合,但是前面的几个字,生成复杂数据 ,好像有点搞头,冥想了一会后好像有点点思路了:

用index判断行数,再用key判断列数,这样在最后两行的时候根据当前的key值去手动渲染需要的数据

代码

知道思路后挺简单的,就是在render函数里面做判断,看注释吧

 render() {
      const getColumns = () => {
		// columns比较长,这里就不贴出来了,注意每项要有个唯一标识key
      columns.map(column => {
        column.render = (text, record, index) =>{
          if(column.key === 'statDate') { // 第一列,因为第一列是固定的文案
            if(index === tableData.length - 2) { //倒数第二行
              return <strong>总计</strong>
            } else if(index === tableData.length - 1) { //倒数第一行
              return <strong>平均值</strong>
            }else  {
              return text
            }
          } else {
            if(index === tableData.length - 2) {
              return <strong>{这里写总计}</strong>
            } else if(index === tableData.length - 1) {
              return <strong>{这里写平均值}</strong>
            }  else  {
              return text
            }
          }

        }
      })
      return columns
    }
 }

总结

利用render函数的强大性,根据传参可以定位到具体的某一行,某一列,然后就可以自定义渲染内容了

还是那句话,遇事不用慌,首先查文档,哈哈。

可以定位到具体的某一行,某一列,然后就可以自定义渲染内容了

还是那句话,遇事不用慌,首先查文档,哈哈。

完事~

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值