首页 > 其他分享 >为React Ant-Design Table增加字段设置

为React Ant-Design Table增加字段设置

时间:2023-11-16 17:24:16浏览次数:38  
标签:React const 表格 silverage 表头 custom 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} />

table-custom

鼠标悬浮在表格时,表格右上角就会出现齿轮 图标。点击之后就可进入设置界面。通过勾选就可以隐藏/展示列。

image.png

支持单行表头,同时也支持双层合并表头。

image.png

你可能注意到上面截图中,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}
/>

接口方式,可通过savedColumnsonChecklistChange配合实现。

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

image.png

鼠标拖拽字段后的icon就可以,同样支持单层和双层表头!

也可以自定义icon样式:

<TableCustom
    columns={columns}
    dataSource={dataSource}
    sortable
    sortHandler={<span>::</span>}
/>


查看完成文档:https://github.com/yuhongda/table-custom

Enjoy

作者:京东零售 于弘达

来源:京东云开发者社区 自猿其说 Tech 转载请注明来源

标签:React,const,表格,silverage,表头,custom,Ant,Design,table
From: https://www.cnblogs.com/Jcloud/p/17835721.html

相关文章

  • The 2023 CCPC Guilin J. The Phantom Menace
    好劲的字符串题,然而实际上和字符串没啥关系比赛的时候全队应该就只有我没读过题面,感觉如果让我看到这个重排+循环同构第一反应肯定是枚举偏移量+Hash比较前后缀,因为我字符串算法高级的不会只会一个Hash,说不定能搞出点想法但今天补的时候发现写起来细节还是挺多的,尤其是有向图的......
  • 【Mquant】7:构建价差套利(三) ——空间误差校正模型
    1.上节回顾【Mquant】6:构建价差套利(二)上节带领大家编写了统计套利均值回归的程序,通过历史回测发现还不能进入实盘交易状态,原因出现在手续费率上,由于加密市场手续费率较高,我们选择国内期货市场,一般期货市场手续费率可以达到万分之一,个别品种手续费率可以达到万分之0.1。这节内......
  • React Native开发App应用程序有哪些优缺点?
    Hello,各位同学们好,我是咕噜铁蛋!今天呢我和大家讲讲另外一种移动应用开发框架reactnative。在快节奏的市场竞争中,企业和开发者追求同时在不同平台上快速发布应用,而跨平台开发框架正是满足这一需求的理想选择之一。作为Facebook推出的开源跨平台移动应用开发框架,ReactNative自2015......
  • Windows下搭建Linux开发环境(vagrant)
     [下载]vagrant软件:https://www.virtualbox.org/wiki/Downloads centos镜像: http://isoredirect.centos.org/centos/7/isos/x86_64/ [安装]1.新建虚拟机新建:- 指定主机名称-类型:Linux-版本:RedHat(64-bit) 点击下一步,可以根据实际需要调整CPU和内存,后面的直接点击下一......
  • 文章《Semantic Kernel -- LangChain 的替代品?》的错误和疑问 探讨
    微信公众号文章SemanticKernel——LangChain的替代品?[1],它使用的示例代码是Python,他却发了这么一个疑问:支持的语言对比(因为SemanticKernel是用C#开发的,所以它对C#比较支持)如上所示。不清楚SemanticKernel为什么要用C#来开发,C#相比Python和JavaScript来说使用......
  • antd的tree的核心显示属性
     树形组件的概念 ......
  • [Mac软件]Adobe XD(Experience Design) v57.1.12.2一个功能强大的原型设计软件
    AdobeXD是一个直观、强大的UI/UX开发工具,旨在设计、原型设计、用户之间共享材料,以及通过数字技术设计交互。AdobeXD为您提供开发网站、应用程序、语音界面、游戏界面、电子邮件模板等所需的一切。无限制地创建设计各种互动,创建看起来和感觉真实的互动原型。感谢你的时间使用基于......
  • React.Children.map的用法
    React.Children用很多用法,如下图,经常会用到的是toArray(),具体用法可以自行了解,这里记录下map()的用法和使用到的场景。1.用法:React.Children.map接收2个参数,第一个是所有子元素,第二个是个回调,可以对每个子元素进行处理,然后返回处理后的子元素。2.使用场景:子元素(也可理解为......
  • 用强数据类型保护你的表单数据-基于antd表单的类型约束
    概述接口数据类型与表单提交数据类型,在大多数情况下,大部分属性的类型是相同的,但很少能做到完全统一。我在之前的工作中经常为了方便,直接将接口数据类型复用为表单内数据类型,在遇到属性类型不一致的情况时会使用any强制忽略类型错误。后来经过自省与思考,这种工作模式会引起各种......
  • 硬件开发笔记(十一):Altium Designer软件介绍、安装过程和打开pcb工程测试
    前言  前面做高速电路,选择是阿li狗,外围电路由于读者熟悉AD,使用使用ad比较顺手,非高速电路就使用AD了,其实AD也可以做高速电路,由于笔者从13年开始做硬是从AD9开始的,所以开始切入AD做硬件软件学习成本会低很多。 AltiumDesigner简介  AltiumDesigner是原Protel软......