#yyds干货盘点 【React工作记录一百零一】再次接触老朋友react+ant design table合并单元格 (1)

简介: #yyds干货盘点 【React工作记录一百零一】再次接触老朋友react+ant design table合并单元格

第一个功能 如何渲染

参照官网案例

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} />;

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


最终数据格式

image.png


结果(解决)

第二个功能 如何合并

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

定义处理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 合并完成


image.png

相关文章
|
1月前
|
资源调度 JavaScript 前端开发
使用vite+react+ts+Ant Design开发后台管理项目(二)
使用vite+react+ts+Ant Design开发后台管理项目(二)
|
1月前
|
前端开发 计算机视觉
React使用antd实现可编辑单元格
React结合Ant Design实现可编辑单元格的表格组件,通过EditableRow和EditableCell封装实现单元格编辑功能,并提供saveFun回调保存编辑内容。
51 1
|
1月前
|
前端开发
react antd点击table行时加选中背景色
react antd点击table行时加选中背景色
68 5
|
2月前
|
前端开发 JavaScript 数据库
在 React 项目中 Editable Table 的实现
由于我们是把 state 存放在父组件的,每次请求会造成 table 进行 render 一遍,如果再加入 loading 等状态,render 次数会更多。Table 组件默认情况下没有对 rerender 行为做优化,父组件更新,如果 columns 中的提供了自定义 render 方法, 对应的每个 Cell 都会重新 render 。 针对这种情况我们就需要进行优化,根据 shouldCellUpdate 来自定义渲染时机。 那么每个 Cell 的渲染时机应该是: 1. FormItem 增删位置变动时 2. 该 Cell 消费的对应 tableOptions 变动时 第一种情况很好判
49 1
|
5月前
|
前端开发 JavaScript 安全
使用React、TypeScript和Ant Design构建现代化前端应用
使用React、TypeScript和Ant Design构建现代化前端应用
164 0
|
10月前
|
存储 前端开发
React & webpack &ant 学习
React & webpack &ant 学习
67 0
|
11月前
|
前端开发
从零开始学习React-引入Ant Design 组件(八)
从零开始学习React-引入Ant Design 组件(八)
90 0
|
前端开发 数据格式
再次接触老朋友react+ant design table合并单元格
再次接触老朋友react+ant design table合并单元格
137 0
|
前端开发
#私藏项目实操分享# 【React工作记录十三】关于ant design table组件里面文字溢出
#私藏项目实操分享# 【React工作记录十三】关于ant design table组件里面文字溢出
167 0
#私藏项目实操分享# 【React工作记录十三】关于ant design table组件里面文字溢出
|
5月前
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
337 0