为React Ant-Design Table增加字段设置 | 京东云技术团队
最近做的几个项目经常遇到这样的需求,要在表格上增加一个自定义表格字段设置的功能。就是用户可以自己控制那些列需要展示。
在几个项目里都实现了一遍,每个项目的需求又都有点儿不一样,迭代了很多版,所以抽时间把这个功能封装了个组件:@silverage/table-custom,将这些差别都集成了进去,方便今后使用和维护。同时也方便需要这个功能的人来使用。
下面介绍下安装和使用
安装
npm i @silverage/table-custom --save yarn add @silverage/table-custom pnpm add @silverage/table-custom
组件在ant-design
基础上开发,所以你也要安装antd
。数据持久化使用的use-local-storage-state
,也是要安装的。另外,react
也是peer dependency。
使用
组件使用非常简单,只需要将你原先antd的<Table />
换成<TableCustom />
即可。兼容所有antd table的属性。
import { TableCustom } from '@silverage/table-custom' <TableCustom columns={columns} dataSource={dataSource} />
鼠标悬浮在表格时,表格右上角就会出现齿轮 图标。点击之后就可进入设置界面。通过勾选就可以隐藏/展示列。
支持单行表头,同时也支持双层合并表头。
你可能注意到上面截图中,ID
列是灰色的,这是因为在使用时,业务希望某些列是固定展示不可隐藏的。这时可以通过对column设置disableCustom: true
来实现。
const columns = [ { title: `ID`, dataIndex: `id`, key: `id`, width: 100, fixed: 'left', disableCustom: true // here } ]
另外,修改后的列想要保存,这里有两个方式:一种是通过localstorage做持久化,一种是通过后端提供接口。不同的项目选择不同方式实现,最近的几个项目两种都用了。
localstorage的方式很简单,只需要提供组件storageKey
属性即可。
<TableCustom storageKey="myKey" columns={columns} dataSource={dataSource} />
接口方式,可通过savedColumns
和onChecklistChange
配合实现。
const [savedColumns, setSavedColumns] = useState([]) <TableCustom columns={columns} dataSource={dataSource} savedColumns={savedColumns ?? []} onChecklistChange={async checkedList => { const res = await api.request() setSavedColumns(res?.data) }} />
过了一段时间使用后,在某些项目中,“极个别同志(no one but you)”认为,这个齿轮的图标太不明显了,想在表格上面放个按钮来控制,所以加了如下属性,让用户自己控制。因为原有表格上方可能有其他按钮。
const [visible, setVisible] = useState(false) <Button onClick={() => setVisible(true)}>Open</Button> <TableCustom columns={columns} dataSource={dataSource} openCustomModal={visible} // here onCustomModalClose={() => setVisible(false)} // and here />
又过了一段时间,为了今后必然出现的字段排序需求,又增加了排序功能,只需要设置sortable字段。
<TableCustom columns={columns} dataSource={dataSource} sortable />
鼠标拖拽字段后的icon就可以,同样支持单层和双层表头!
也可以自定义icon样式:
<TableCustom columns={columns} dataSource={dataSource} sortable sortHandler={<span>::</span>} />
查看完成文档:https://github.com/yuhongda/table-custom
Enjoy
作者:京东零售 于弘达
来源:京东云开发者社区 自猿其说 Tech 转载请注明来源

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
promise时效架构升级方案的实施及落地 | 京东物流技术团队
一、项目背景 为什么需要架构升级 promise时效包含两个子系统:内核时效计算系统(系统核心是时效计算)和组件化时效系统(系统核心是复杂业务处理以及多种时效业务聚合,承接结算下单黄金流程流量),后者依赖前者,分别由两组技术团队支持;因为有些业务的渗透造成两个系统的边界越来越不清晰;有些需求从PRD评审到项目上线,需要两组研发全程参与,耗费大量人力; promise时效计算业务逻辑经过多年的沉淀越来越复杂,时效计算系统中有很多业务逻辑,导致计算内核也需要跟随需求频繁更新; 时效计算分为预约和非预约,下单前和下单后,结算页时效和商详页时效。有共性也存在差异,导致共用一部分内核计算的同时存在大量冗余重复代码,需要同时维护和存储两份时效计算的缓存数据。 多种业务从内核系统中提供专用接口,导致系统严重腐化。 存在部分未采用RPC方式的依赖,导致jar包依赖和时效计算的切量开关需要配置在组件化时效系统中,影响开发和联调效率。 综上,决定这次技术驱动的重构,需要架构升级解决系统中存在的问题。 重构目标 业务边界更清晰 重构之后的需求边界从产品侧就能够确定,如果新增仓配时效计算规则需要修改或新增内核...
- 下一篇
通过Python脚本支持OC代码重构实践(三):数据项使用模块接入数据通路的适配
作者 | 刘俊启 导读 在软件开发中,经常会遇到一些代码问题,例如逻辑结构复杂、依赖关系混乱、代码冗余、不易读懂的命名等。这些问题可能导致代码的可维护性下降,增加维护成本,同时也会影响到开发效率。这时通常通过重构的方式对已有代码结构进行改进和优化。在重构的工作中,大部分的工作是人工的方式完成,是一个耗时且容易出错的过程。对于研发人员来讲,在不改变软件的功能和行为的前提下,保证质量和效率完成对已有功能的重构,是一个极大的挑战。本系列以Python实现自动化的工具,支持代码重构过程的实践。 在第一篇《通过Python脚本支持OC代码重构实践(一):模块调用关系分析》的内容中,介绍了使用Python实现模块调用关系的分析,确定了调用数据项的代码块超过了600处,如图-1所示,这些调用点分布在不同的组件中,是直接调用的关系。 △图-1 在第二篇《通过Python脚本支持OC代码重构实践(二):数据项提供模块接入数据通路的代码生成》的内容中,重点介绍了使用Python实现了数据项提供模块接入数据通路时,公开数据项相关的代码生成(图-2中的红框部分),这时数据项读写由原来的直接读写方式改为通过数据...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启