AntD 可编辑行表格

本地数据代码模板自用,官网例子改改

// 编辑行的自定义表格
import React, { useState } from "react";
import {Table,Input,InputNumber,Popconfirm,Form,Typography,Divider,
} from "antd";interface Item {key: string;name: string;age: number;address: string;
}const originData: Item[] = [];
for (let i = 0; i < 100; i++) {originData.push({key: i.toString(),name: `Edrward ${i}`,age: 32,address: `London Park no. ${i}`,});
}
interface EditableCellProps extends React.HTMLAttributes<HTMLElement> {editing: boolean;dataIndex: string;title: any;inputType: "number" | "text";record: Item;index: number;children: React.ReactNode;
}const EditableCell: React.FC<EditableCellProps> = ({editing,dataIndex,title,inputType,record,index,children,...restProps
}) => {const inputNode = inputType === "number" ? <InputNumber /> : <Input />;return (<td {...restProps}>{editing ? (<Form.Itemname={dataIndex}style={{ margin: 0 }}rules={[{required: true,message: `Please Input ${title}!`,},]}>{inputNode}</Form.Item>) : (children)}</td>);
};const EditableTable = () => {const [form] = Form.useForm();const [data, setData] = useState(originData);const [editingKey, setEditingKey] = useState("");const isEditing = (record: Item) => record.key === editingKey;const edit = (record: Partial<Item> & { key: React.Key }) => {form.setFieldsValue({ name: "", age: "", address: "", ...record });setEditingKey(record.key);};const cancel = () => {setEditingKey("");};// 删除const deleteRow = (record: Item) => {setData(data.filter((item: Item) => item.key !== record.key));};const save = async (key: React.Key) => {try {const row = (await form.validateFields()) as Item;const newData = [...data];const index = newData.findIndex((item) => key === item.key);if (index > -1) {const item = newData[index];newData.splice(index, 1, {...item,...row,});setData(newData);setEditingKey("");} else {newData.push(row);setData(newData);setEditingKey("");}} catch (errInfo) {console.log("Validate Failed:", errInfo);}};const columns = [{title: "name",dataIndex: "name",width: "25%",editable: true,},{title: "age",dataIndex: "age",width: "15%",editable: true,},{title: "address",dataIndex: "address",width: "40%",editable: true,},{title: "operation",dataIndex: "operation",render: (_: any, record: Item) => {const editable = isEditing(record);return editable ? (<span><Typography.LinkonClick={() => save(record.key)}style={{ marginRight: 8 }}>Save</Typography.Link><Typography.LinkonClick={() => cancel()}style={{ marginRight: 8 }}>Cancel</Typography.Link></span>) : (<><Typography.Linkdisabled={editingKey !== ""}onClick={() => edit(record)}>Edit</Typography.Link><Divider type='vertical' /><Popconfirmtitle='Sure to delete?'onConfirm={() => deleteRow(record)}><Typography.Link disabled={editingKey !== ""}>Delete</Typography.Link></Popconfirm></>);},},];const mergedColumns = columns.map((col) => {if (!col.editable) {return col;}return {...col,onCell: (record: Item) => ({record,inputType: col.dataIndex === "age" ? "number" : "text", // 设置类型dataIndex: col.dataIndex,title: col.title,editing: isEditing(record),}),};});return (<Form form={form} component={false}><Tablecomponents={{body: {cell: EditableCell,},}}bordereddataSource={data}columns={mergedColumns}rowClassName='editable-row'pagination={{onChange: cancel,}}/></Form>);
};export default EditableTable;

 

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

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

相关文章

三心二意,助你好运?

经验说&#xff1a;做事要专心致志。 实验说&#xff1a;专心致志常常让人缺少一双发现的眼睛。 专心致志从来都被当做一个美德来歌颂。从来我们就认为要想成为伟大的人就必须要像牛顿老师那样把钟当成吃的放到锅里煮才行&#xff0c;至少至少也得有能在集市上看书的本事。否则…

React Antd Upload自定义上传customRequest

单独的上传图片接口要传参,action方式不太适合,需要使用自定义上传customRequest覆盖 公司代码不可弄,就发一个可用的demo例子 import React, { useState } from "react"; import { render } from "react-dom"; import "antd/dist/antd.css"; i…

HDU 4109 Instrction Arrangement

题目链接&#xff1a;https://vjudge.net/problem/HDU-4109 题目大意 有 N 个指令&#xff0c;标号从 0 ~ N - 1&#xff0c;和 M 个指令间的先后关系&#xff0c;每个关系都有一个权值 w&#xff0c;表示后一个指令在前一个指令开始时间之后 w 纳秒才开始执行。现在要并发执行…

养成一个习惯需要多久?

有人说养成一个习惯需要21天&#xff0c;有人说30天……养成习惯到底需要多少天&#xff1f; _hzw 2012-11-09 18:04又快到年末了。 年初时&#xff0c;你曾许诺要养成一些好习惯&#xff0c;比如要常运动、多读书、少微博。有人说说养成一个习惯只需要坚持21天&#xff1b;21天…

vue3 eslint The template root requires exactly one element问题

vue项目中手动引入eslint npm install eslint --save-dev eslint初始化 npx eslint --init 运行时npm run lint 简单语法问题--fix会自动修复 但是vue3项目出现只能有一个根节点的问题 原因在于 eslintrc.js里extends中plugin:vue/essential的问题 看eslint-plugin-vue官网…

你所知道的学习方法,都是错的!

你所知道的学习方法&#xff0c;都是错的&#xff01; 上课的时候记笔记&#xff1f;哪门功课不行&#xff0c;就集中精力专项突击&#xff1f;自习的时候不要晃&#xff0c;选好一个地儿安安稳稳地待那儿学习&#xff1f;你还在这样学习吗&#xff1f;不要被骗了&#xff1a;这…

Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台: 微服务是当前非常流行的技术框架&#xff0c;通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性&#xff0c;可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性…

亚伦•斯沃茨:提升时间的品质

亚伦•斯沃茨&#xff1a;提升时间的品质 不休不眠地工作是低效的&#xff0c;怎样发挥时间的最大效率&#xff1f; 伏维阁主 2013-01-18 16:45图片来源&#xff1a;personalitytutor.com &#xff08;亚伦•斯沃茨Aaron Swartz / 文&#xff09;《 怎样有效利用时间 》中给出的…

Flex4_HttpService组件

1、在JavaWeb项目中新建Servlet(FlexLoginServelt) &#xff1a; public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");response.setContentType("text…

想要提高记忆力?做梦去吧!

想要提高记忆力&#xff1f;做梦去吧&#xff01; 豆豆助 2010-11-26 11:47经验说&#xff1a;不好好学习&#xff0c;就知道睡觉 实验说&#xff1a;要想记忆好&#xff0c;睡觉不能少。做梦可以增强我们的记忆。 有没有办法能让人不费吹灰之力增强记忆力&#xff1f; 做梦吧你…

This beta version of Typora is expired, please download and install a newer version. 解决方案

原文链接&#xff1a;https://blog.csdn.net/yyywxk/article/details/125133205 问题描述 今日打开 Typora 软件时&#xff0c;突然报错&#xff0c;提示软件版本已过期&#xff0c;需要安装新版本&#xff0c;如下图所示。 关闭错误提示框后会自动跳转到&#xff1a;https://…

真想学习?扔掉你详细的计划吧!

真想学习&#xff1f;扔掉你详细的计划吧&#xff01; 该不该定个计划&#xff1f;详细的计划确实可以更高效&#xff0c;也许可以将你减肥的速度加快一倍。但是如果想学习&#xff0c;还是扔掉详细的计划吧&#xff01;因为它会占用你太多的认知资源&#xff0c;只顾着闷头做事…

React Icons

发现一个Icon库,分享下哈; 使用React-Icons轻松地在React项目中包含流行图标&#xff0c;它利用es6导入&#xff0c;允许只包含项目正在使用的图标。 Installation (for standard modern project) npm install react-icons --save Usage import { FaBeer } from react-ico…

那些你可能还不知道的新发明

The Wello WaterWheel 对世界上六分之一的人来说&#xff0c;取水是个苦活&#xff1a;步行数小时&#xff0c;排队等待&#xff0c;负重运送。 而花费在这个基本需求上的时间让许多儿童不得不辍学&#xff0c;让女人不能负起责任来处理家务或者工作以取得收入。在很多欠发达地…

AntD中Form的input正则校验:不能输入空格

什么是正则表达式&#xff1f; 在编写处理字符串的程序或网页时&#xff0c;经常有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说&#xff0c;正则表达式就是记录文本规则的代码。 正则test() 方法 定义和用法 test() 方法用于检测一…

react之react-spring动效库

react-spring具有基于钩子和基于组件的API&#xff0c;这里将专门针对所有动画使用具有基本状态的钩子. framer-motion也很好用,但是体积2M多,太大了劝退 react-spring才6KB. react-spring npm搜索 老官网react-spring 官网Getting started | React Spring 做了个横向遍…

Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析

Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析 生鲜电商搜索引擎的特点 众所周知&#xff0c;标准的搜索引擎主要分成三个大的部分&#xff0c;第一步是爬虫系统&#xff0c;第二步是数据分析&#xff0c;第三步才是检索结果。首先&#xff0c;电商的搜…

答应我不要问TCP三次握手四次挥手

衍生头疼问题如下。 请画出三次握手和四次挥手的示意图为什么连接的时候是三次握手&#xff1f;什么是半连接队列&#xff1f;ISN(Initial Sequence Number)是固定的吗&#xff1f;三次握手过程中可以携带数据吗&#xff1f;如果第三次握手丢失了&#xff0c;客户端服务端会如…

深度学习鼻祖杰夫·辛顿及巨头们的人才抢夺战

摘要&#xff1a;深度学习已经诞生了数十年时间&#xff0c;但直到近几年才受到各大科技公司的重视&#xff0c;被认为是硅谷科技企业的未来&#xff0c;今天为大家介绍的是深度学习的开山鼻祖Geoffrey Hinton。在过去的三十年&#xff0c;深度学习运动一度被认为是学术界的一个…

EM算法(Expectation Maximization Algorithm)

文章目录 1. 前言 2.基础数学知识2.1.凸函数2.2.Jensen不等式 3.EM算法所解决问题的例子 4.EM算法4.1.模型说明 4.2.EM算法推导 4.3.EM算法收敛性证明 4.4. EM算法E步说明 5.小结 6.主要参考文献1. 前言 这是本人写的第一篇博客(2013年4月5日发在cnblogs上,现在迁移过来)&#…