再次接触老朋友react+ant design table合并单元格

简介: 再次接触老朋友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', }, ];

; ```






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


最终数据格式

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


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

根据数据返回的条数进行累加 累加到最大条数置为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]);

image.png



第四个功能 增加合计

<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完成数据合计 对应再对应的值上面即可 继续接口返回


image.png

总结

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





相关文章
|
4月前
|
资源调度 JavaScript 前端开发
使用vite+react+ts+Ant Design开发后台管理项目(二)
使用vite+react+ts+Ant Design开发后台管理项目(二)
|
4月前
|
前端开发
react antd点击table行时加选中背景色
react antd点击table行时加选中背景色
127 5
|
5月前
|
前端开发 JavaScript 数据库
在 React 项目中 Editable Table 的实现
由于我们是把 state 存放在父组件的,每次请求会造成 table 进行 render 一遍,如果再加入 loading 等状态,render 次数会更多。Table 组件默认情况下没有对 rerender 行为做优化,父组件更新,如果 columns 中的提供了自定义 render 方法, 对应的每个 Cell 都会重新 render 。 针对这种情况我们就需要进行优化,根据 shouldCellUpdate 来自定义渲染时机。 那么每个 Cell 的渲染时机应该是: 1. FormItem 增删位置变动时 2. 该 Cell 消费的对应 tableOptions 变动时 第一种情况很好判
84 1
|
8月前
|
前端开发 JavaScript 安全
使用React、TypeScript和Ant Design构建现代化前端应用
使用React、TypeScript和Ant Design构建现代化前端应用
222 0
|
8月前
|
前端开发
react使用ant desgin 组件实现便利开发
react使用ant desgin 组件实现便利开发
|
存储 前端开发
React & webpack &ant 学习
React & webpack &ant 学习
77 0
|
2月前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
103 9
|
3月前
|
前端开发
深入解析React Hooks:构建高效且可维护的前端应用
本文将带你走进React Hooks的世界,探索这一革新特性如何改变我们构建React组件的方式。通过分析Hooks的核心概念、使用方法和最佳实践,文章旨在帮助你充分利用Hooks来提高开发效率,编写更简洁、更可维护的前端代码。我们将通过实际代码示例,深入了解useState、useEffect等常用Hooks的内部工作原理,并探讨如何自定义Hooks以复用逻辑。
|
2月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
242 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
2月前
|
前端开发 JavaScript 开发者
使用React和Redux构建高效的前端应用
使用React和Redux构建高效的前端应用
63 1