Antd中Table列表行默认包含修改及删除功能的封装

news/2024/5/3 5:13:29/文章来源:https://blog.csdn.net/momoda118/article/details/127995864

一、前言

ant-design是非常不错、方便的一款前端组件库,而这次用到的ProComponents则是在 Ant Design 上进行了自己的封装,更加易用,与 Ant Design 设计体系一脉相承,无缝对接 antd 项目,样式风格与 antd 一脉相承,无需魔改,浑然天成。一些预设行为也达到了更少的代码,更少的 Bug的目的。

这里我使用ProComponents的editable-table时发现它的表格默认自带了修改删除功能:

在这里插入图片描述


代码封装的actionRender方法提供了相应的参数来使用默认的修改删除:

在这里插入图片描述

自己使用的项目也有非常多的表单,大部分都包含修改删除功能,所以对我来讲也是非常实用的,但它的修改是在行内编辑,我的需要弹窗编辑,所以这里根据自己的思路封装了一下,下面分享给大家。


文章目录

  • 一、前言
  • 二、给Table封装默认的修改、删除功能
  • 三、实现效果


二、给Table封装默认的修改、删除功能

整个封装过程把思路理清楚了也能很简单的实现,首先是将弹窗方法(不同功能的表单会有差异)传递给封装的公共Table:

  //弹窗方法const showModal = (type: string, values: any = {}) => {values['formType'] = type;setFormData(values);setFormVisible(true);};

传递给table:

     <LimTableactionRef={ref}columns={columns}func={UserView}showModal={showModal}headerTitle="用户列表"/>

然后在公共Table组件中定义默认表单的操作方法(修改,删除)这里只提供思路,代码不适用于你的项目:

  //默认的表单操作domconst defaultColumnDom = {update: (record: any) => (<a key="update" onClick={() => showModal(PATCH, record)}>修改</a>),delete: (record: any) => (<akey="delete"onClick={() => {deleteDataFunc(func, record.id);}}>删除</a>),};

然后放入设置表单操作栏的方法中:

  //设置表单options(操作栏)的方法const setDefualtColumnsOptions = () => {for (let i = 0; i < columns.length; i++) {if (columns[i].dataIndex === 'option') {if (!optionRender) {//没有配置optionRender则默认增加修改、删除功能columns[i].render = (_: any, record: any) => [defaultColumnDom.update(record),defaultColumnDom.delete(record),];} else {columns[i].render = (_: any, record: any) =>optionRender({ update: defaultColumnDom.update(record), delete: defaultColumnDom.delete(record) }, record);}break;}}};

最后加入useEffect中即可完成:

 useEffect(() => {setDefualtColumnsOptions();}, []);

三、实现效果

当我们不传递optionRender时,列表默认携带修改、和删除功能:
在这里插入图片描述


当我们传递了optionRender时,列表根据传递的渲染操作栏:

只包含修改功能

      <LimTableactionRef={ref}columns={columns}func={UserView}optionRender={(dom: any) => [dom.update]}showModal={showModal}headerTitle="用户列表"/>

在这里插入图片描述


包含修改功能并附加文字:

      <LimTableactionRef={ref}columns={columns}func={UserView}optionRender={(dom: any) => [dom.update, '曲鸟']}showModal={showModal}headerTitle="用户列表"/>

在这里插入图片描述


这样我们又封装好了一个组件了,减少了后面编码的重复性工作,也间接减少了BUG的产生。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_227323.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP 财务月结之 外币评估(TCODE:FAGL_FC_VAL,S4版本用 FAGL_FCV)<转载>

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/367876296 在会计期末&#xff0c;企业往往会有以外币记的余额&#xff0c;如应付账款&#xff08;国外&#xff09;、应收账款&#xff08;国外&#xff09;&#xff0c;或外币存款。而企业出具的财务报表&#xff0c;货币必…

学习笔记11月27日

Infant Brain Deformable Registration Using Global and Local Label-Driven Deep Regression Learning 文章来源&#xff1a;谷歌学术 一、摘要 婴儿大脑磁共振&#xff08;MR&#xff09;图像的可变形配准具有挑战性&#xff0c;因为&#xff1a;(1)这些纵向图像存在较大的…

RK3588平台开发系列讲解(USB篇)USB 外设 CONFIG

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、 Mass Storage Class CONFIG二、USB Serial Converter CONFIG三、USB HID CONFIG四、USB Net CONFIG五、USB Camera CONFIG六、USB Audio CONFIG七、 USB HUB CONFIG沉淀、分享、成长,让自己和他人都能有所收获!…

Java并发-多线程售票案例

1. 前言 本节内容主要是使用 Java 的使用 Condition 和 Lock 机制对多线程售票案例进行实现。售票案例多数情况下主要关注多线程如何安全的减少库存&#xff0c;也就是剩余的票数&#xff0c;当票数为 0 时&#xff0c;停止减少库存。 2. 售票机制模型 如下图所示&#xff0…

ANR系列之ContentProvider类型原理讲解

前言&#xff1a; 众所周知&#xff0c;ANR一共有四种类型&#xff0c;如下&#xff1a; 1.输入事件类型ANR 2.广播类型ANR 3.ContentProvider类型ANR 4.Service类型ANR 四种类型的超时时间如下所示&#xff1a; 所以ANR系列文章也会分为5篇文章来进行讲解&#xff0c;本…

管理最忌讳用权管人

阅读本文大概需要 1.66 分钟。最近星球在更新一些系列课程&#xff0c;其中有一节课叫「怎样从技术人转型管理者&#xff1f;」应该很适合大多读者&#xff0c;毕竟关注我的读者里&#xff0c;做技术做管理的居多&#xff0c;所以这篇也发这里给大家分享下。程序员做技术的&…

WebView2 通过 PuppeteerSharp 实现爬取 王者 壁纸 (案例版)

王者壁纸自动化获取逻辑分析 其实它的逻辑很简单&#xff0c; 就是王者的官网&#xff0c;打开后&#xff0c;在右下角就看到了皮肤页面部分。 这个时候&#xff0c;点击更多&#xff0c;就会打开全部英雄详情的页面。 这个时候&#xff0c;单点任意一个英雄&#xff0c;就会…

Rust机器学习之Linfa

Rust机器学习之Linfa 众所周知&#xff0c;Python之所以能成为机器学习的首选语言&#xff0c;与其丰富易用的库有很大关系。某种程度上可以说是诸如numpy、pandas、scikit-learn、matplotlib、pytorch、networks…等一系列科学计算和机器学习库成就了Python今天编程语言霸主的…

DDOS防护如何建设?

数字化转型发展也推动了云计算、人工智能、大数据、物联网等新一代信息技术应用普及&#xff0c;与此同时&#xff0c;新时代的发展也带来了新的网络威胁和新的安全需求。我们不难发现&#xff0c;近年网络攻击时间层出不穷&#xff0c;全球范围来看&#xff0c;企业因遭受网络…

CrossOver软件2022可以使苹果MAC电脑运行Windows软件应用

面对安装双系统时的繁琐步骤&#xff0c;以及虚拟机软件那庞大的体积&#xff0c;CrossOver的出现&#xff0c;让一切都变得简单起来。 CrossOver自带的一系列的Windows应用&#xff0c;涵盖游戏软件、办公软件、设计软件等多个种类。它轻巧的体积&#xff0c;便捷的操作步骤无…

国鸿氢能冲刺港股:年亏损7亿 云浮工业园与青岛城投是股东

雷递网 雷建平 11月28日国鸿氢能科技&#xff08;嘉兴&#xff09;股份有限公司&#xff08;简称&#xff1a;“国鸿氢能”&#xff09;日前递交招股书&#xff0c;准备在港交所上市。年亏损7亿国鸿氢能成立于2015年6月&#xff0c;是一家以氢燃料电池为核心产品的企业&#x…

字符串压缩(二)之LZ4

一、LZ4压缩与解压 LZ4有两个压缩函数。默认压缩函数原型&#xff1a; int LZ4_compress_default(const char* src, char* dst, int srcSize, int dstCapacity); 快速压缩函数原型&#xff1a; int LZ4_compress_fast (const char* src, char* dst, int srcSize, int dstCapaci…

如何用潜类别混合效应模型(Latent Class Mixed Model ,LCMM)分析老年痴呆年龄数据

全文下载链接&#xff1a;http://tecdat.cn/?p24647线性混合模型假设 N 个受试者的群体是同质的&#xff0c;并且在群体水平上由独特的曲线 Xi(t)β 描述&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。相关视频背景和定义相比之下&#xff0c;潜在类别混合模…

【毕业设计】24-基于单片机的电子显示屏的设计与应用(原理图+源码+仿真工程+论文+答辩PPT)

【毕业设计】24-基于单片机的电子显示屏的设计与应用&#xff08;原理图源码仿真工程论文答辩PPT&#xff09; 文章目录任务书设计说明书摘要设计框架架构设计说明书及设计文件源码展示任务书 主要研究内容&#xff1a; 通过查阅资料&#xff0c;掌握单片机基本工作原理&#…

【STM32备忘录】二、FSMC做LCD控制器,使用stm32cube配置示例

文章目录1. FSMC框图2. 配置示例(1) cube配置(2) 代码参考*疑问1. FSMC框图 如果屏幕接口8位数据宽度访问&#xff0c;地址线FSMC_A[25:0], 一共26位&#xff0c;一个块22667108864Byte64MB&#xff0c;如果屏幕接口16位数据宽度访问&#xff0c;地址线FSMC_A[25:0], 一共26位&…

鸿蒙全量源代码在线阅读

目录 前言 下载方式复杂 占用空间大 搜索效率低 本项目目标 服务器地址 使用手册 源码浏览服务 标识符搜索 普通文本搜索 代码比较 写在最后 前言 当前&#xff0c;OpenHarmony项目持续发展&#xff0c;其代码量已经超过了20G字节的存储占用空间&#xff0c;对于一…

基于人工蜂群算法的线性规划求解matlab程序

基于人工蜂群算法的线性规划求解matlab程序 1 人工蜂群算法概述 2005年D. Karaboga教授仿照蜜蜂集群采蜜生物行为&#xff0c;提出了人工蜂群仿生算法&#xff0c;可以有效解决有关函数优化等相关难题。ABC算法仿照蜜蜂蜂群中不同蜂种相互协作&#xff0c;蜂群间进行角色转换的…

不同类型的 SSL 证书解释

了解不同类型的 SSL 证书&#xff1a;扩展验证 (EV)、组织验证 (OV) 和域名验证 (DV)。 查看用例及更多。 SSL/TLS 证书用于验证网站的身份并在服务器和浏览器之间创建安全连接。有许多不同类型的 SSL 证书选项可用&#xff0c;它们都有其独特的用例和价值主张。证书颁发机构 …

电磁仿真设计RMxprt-6p72s电励磁凸极同步电机分析案例

作者 | 电机设计青年 仿真秀专栏作者 导读&#xff1a;大家好&#xff0c;我是仿真秀专栏作者——电机设计青年&#xff0c;曾担任ANSYS低频电磁工程师一职&#xff0c;后入职电机企业&#xff0c;一直从事电机产品研发工作。研究的电机类型涉及电励磁同步电机、永磁同步电机、…

MIT发现语言模型内的事实知识可被修改??

文 | 小伟前言众所周知&#xff0c;自回归语言模型(如GPT-2)里存储着大量的事实知识&#xff0c;比如语言模型可以正确的预测出埃菲尔铁塔所在的城市是巴黎市。那么语言模型是在什么地方存储这些知识呢&#xff1f;我们是否可以修改存储在语言模型里的知识呢&#xff1f;来自于…