前端-自定义Ant Design 表格(可编辑表格)

选取的的是:表格 Table - Ant Design

其实ant design本身就有增加和删除单列数据的封装好的表格,但是个人觉得那个功能繁多,自己实现封装也便于之后理解和二次使用。

初步效果(舍去切换样式的功能):

突破的关键点就是在点击表格的每一行都是有对应的rowkey:

以此我们新增加入一行数据删减选中数据的功能

①将表格利用useState实现响应式:

    const [data,setData] = useState([

        {

            key: '1',

            name: 'John Brown',

            age: 32,

            address: 'New York No. 1 Lake Park',

        },

    ]);

②添加增加和删减按钮:

③新增实现代码:

新增代码

    let [count,setCount]=useState(2)//每一行都有独立的的key

    const adddata=()=>{

        const newrowdata={

            key:count,

            name: 'newname',

            age: 42,

            address: 'newaddress',

        }

        //利用扩展运算符将新增数据拷贝到原数据实现新增

        setData([...data,newrowdata])

        setCount(count+1)

    }

实现新增功能:

④删除选中行实现代码: 

我们需要利用已经定义好的rowSelection收集选中行的key

    let [selecteddatarowkeys,setSelecteddatarowkeys]=useState([])

    const rowSelection = {

        onChange: (selectedRowKeys, selectedRows) => {

            console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);

            setSelecteddatarowkeys(selectedRowKeys)

        },

        getCheckboxProps: (record) => ({

            //设置禁用行,我们默认为第一行

            disabled: record.key === '1',

        }),

    };

    console.log('收集的选中行:'+selecteddatarowkeys)

那么就可以实现功能就很方便了:

    const deletedata=()=>{

        //去除data当中包含选中行的rowkeys

        const newdate=data.filter(item=>!selecteddatarowkeys.includes(item.key))

        setData(newdate)

    }

⑤附上全部代码:

import React, { useState } from 'react';
import { Table ,Button} from 'antd';
import { PlusOutlined, MinusOutlined } from '@ant-design/icons';
const App = () => {//就是相当于每列的索引const columns = [{title: 'Name',dataIndex: 'name',render: (text) => <a>{text}</a>,},{title: 'Age',dataIndex: 'age',},{title: 'Address',dataIndex: 'address',},];//每列的数据const [data,setData] = useState([{key: '1',name: 'John Brown',age: 32,address: 'New York No. 1 Lake Park',},]);let [selecteddatarowkeys,setSelecteddatarowkeys]=useState([])const rowSelection = {onChange: (selectedRowKeys, selectedRows) => {console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);setSelecteddatarowkeys(selectedRowKeys)},getCheckboxProps: (record) => ({//设置禁用行,我们默认为第一行disabled: record.key === '1',}),};console.log('收集的选中行:'+selecteddatarowkeys)let [count,setCount]=useState(2)const adddata=()=>{const newrowdata={key:count,name: 'newname',age: 42,address: 'newaddress',}//利用扩展运算符将新增数据拷贝到原数据实现新增setData([...data,newrowdata])setCount(count+1)}const deletedata=()=>{//去除data当中包含选中行的rowkeysconst newdate=data.filter(item=>!selecteddatarowkeys.includes(item.key))setData(newdate)}return (<div style={{ display: 'flex' ,flexDirection:'column'}}><div className="operatedata" style={{margin:'20px'}}><Button type="primary" icon={<PlusOutlined />} onClick={adddata} style={{margin:'0 10px'}}>新增</Button><Button type="primary" icon={<MinusOutlined />} onClick={deletedata}>删减</Button></div><TablerowSelection={{...rowSelection,}}columns={columns}dataSource={data}/></div>);
};
export default App;

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

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

相关文章

通过ajax的jsonp方式实现跨域访问,并处理响应

一、场景描述 现有一个项目A&#xff0c;需要请求项目B的某个接口&#xff0c;并根据B接口响应结果A处理后续逻辑。 二、具体实现 1、前端 前端项目A发送请求&#xff0c;这里通过jsonp的方式实现跨域访问。 $.ajax({ url:http://10.10.2.256:8280/ssoCheck, //请求的u…

AI监控赋能健身馆与游泳馆全方位守护,提升安全效率

一、AI视频监控技术的崛起 随着人工智能技术的不断发展&#xff0c;AI视频监控正成为各行业保障安全、提升效率的关键工具。相比传统监控系统&#xff0c;AI技术赋予监控系统实时分析、智能识别和精准预警的能力&#xff0c;让“被动监视”转变为“主动防控”。 二、AI监控应用…

Maven完整技术汇总

额外知识点 IDE IDE是集成开发环境的缩写&#xff0c;它是一种软件应用程序&#xff0c;提供了编码、调试和部署软件的一站式解决方案。这些功能集成在一起&#xff0c;使开发人员能够在一个环境中完成整个软件开发过程&#xff0c;从编写代码到调试和测试&#xff0c;直到最终…

细说STM32F407单片机SPI基础知识

目录 一、 SPI接口和通信协议 1、 SPI硬件接口 &#xff08;1&#xff09;MOSI(Master Output Slave Input) &#xff08;2&#xff09;MISO(Master Input Slave Output) &#xff08;3&#xff09;SCK 2、SPI传输协议 &#xff08;1&#xff09;CPHA0时的数据传输时序 …

华为自反ACL实验

一、实验背景 做这个实验的原因是最近公司里上了三台小程序服务器&#xff0c;由于三台服务器的端口都映射出去了&#xff0c;领导要求A网段的三台服务器不能访问内网B&#xff0c;C网段&#xff0c;同时B、C网段内网用户可以访问A段的94、95、96服务器&#xff1b; 也就是PC4\…

geeCache 一致性hash

目标&#xff1a;解决当自身结点没有改缓存时&#xff0c;从哪个结点获得这个缓存的问题 一、普通的hash算法 hash(Tom)%结点数量 缺点&#xff1a;缓存雪崩 缓存雪崩是指在某一时刻&#xff0c;大量缓存同时失效或宕机&#xff0c;导致大量请求直接访问数据库&#xff0c;从…

rabbitMq举例

新来个技术总监&#xff0c;把 RabbitMQ 讲的那叫一个透彻&#xff0c;佩服&#xff01; 生产者 代码举例 public String sendMsg(final String exchangeName,final String routingKey,final String msg) {} /*** 发送消息* param exchangeName exchangeName* param routin…

HNSW 分布式构建实践

作者&#xff1a;魏子敬 一、背景 随着大模型时代的到来&#xff0c;向量检索领域面临着前所未有的挑战。embedding 的维度和数量空前增长&#xff0c;这在工程上带来了极大的挑战。智能引擎事业部负责阿里巴巴搜推广及 AI 相关工程系统的设计和建设&#xff0c;我们在实际业务…

Windows安装elasticsearch、Kibana以及IK分词器

一、下载 1.下载elasticsearch 访问官网Download Elasticsearch | Elastic&#xff0c;下载elasticsearch 2.下载 Kibana 访问Download Kibana Free | Get Started Now | Elastic &#xff0c;下载 Kibana 3. IK分词器下载 访问Gitee 极速下载/elasticsearch-analysis-ik选…

1125 子串与子列 (暴力搜索,PAT甲级中文版,C++实现)

子串是一个字符串中连续的一部分&#xff0c;而子列是字符串中保持字符顺序的一个子集&#xff0c;可以连续也可以不连续。例如给定字符串 atpaaabpabtt&#xff0c;pabt是一个子串&#xff0c;而 pat 就是一个子列。 现给定一个字符串 S 和一个子列 P&#xff0c;本题就请你找…

低通滤波器,高通滤波器,公式

1 低通滤波器 &#xff1a;输出的是电容的电压 1 低通滤波器可以把低频信号上面的高频信号给滤掉 2 100hz正常通过 3 经过低通滤波器后&#xff0c;波形光滑&#xff0c;绿色波形。一致 4 电容充电速度跟不上输入信号的速度&#xff08;因为加了电阻&#xff0c;限制了电流&…

前端样式练手:阴阳图+时钟的组合

开篇 今天的小作品是突然脑子灵光一闪写出来的&#xff0c;代码不多&#xff0c;就不过多赘述了。 代码实现 <template><div class"clock-container"><!-- 八卦图 --><!-- <div class"bagua"><divv-for"(trigram, ind…

拟合与滤波算法:(四)中值滤波

中值滤波 1&#xff09;算法说明 把测量值放在一个数组里&#xff0c;设置一个长度为 m m m 的小窗&#xff0c;令它在数组上滑动&#xff0c;对窗口内的值进行排序&#xff0c;用中间值替换原来的数据&#xff08;窗口中间的原数据&#xff09;&#xff1b;每次滑动一格&am…

Deepmotion技术浅析(四):人体姿态估计

人体姿态估计是 DeepMotion 动作捕捉和 3D 重建流程中的核心模块之一。该模块的主要任务是从输入的视频帧中检测并定位人体关键点&#xff08;如关节、头部、手脚等&#xff09;的位置。DeepMotion 的人体姿态估计模块不仅支持 2D 关键点检测&#xff0c;还能够进行 3D 关键点估…

Oracle plsqldev1106 安装及TNS配置

Oracle plsqldev1106 安装及TNS配置 下载好安装包&#xff0c;直接双击安装 点击 I Agree 默认是C盘的&#xff0c;我改了D盘&#xff0c;根据自己实际情况修改 这里用默认的for current user 也可以&#xff0c;我选了for all user 点Finish&#xff0c;等待安装完成即可 …

计算机进制的介绍

一.进制介绍 对于整数&#xff0c;有四种表示方式: 1&#xff09;二进制:0,1&#xff0c;满2进1。 在golang中&#xff0c;不能直接使用二进制来表示一个整数&#xff0c;它沿用了c的特点。 参考:Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国 //赋值…

[OpenGL] Transform feedback 介绍以及使用示例

一、简介 本文介绍了 OpenGL 中 Transform Feedback 方法的基本概念和代码示例。 二、Transform Feedback 介绍 1. Transform Feedback 简介 根据 OpenGL-wiki&#xff0c;Transform Feedback 是捕获由顶点处理步骤&#xff08;vertex shader 和 geometry shader&#xff0…

如何使mysql数据库ID从0开始编号——以BiCorpus为例

BiCorpus是北京语言大学韩林涛老师研制一款在线语料库网站&#xff0c;可以通过上传tmx文件&#xff0c;实现在线检索功能&#xff0c;程序在github上开源免费&#xff0c;深受广大网友的喜欢。 在使用过程中&#xff0c;我发现我上传的语言资产经历修改后&#xff0c;mysql的…

C++---入门

C补充了上的不足&#xff0c;使用各方面更加便捷&#xff0c;在C的基础上面向对象进行编译&#xff0c;学过C之后&#xff0c;对学习C的一定的帮助。 命名空间&#xff1a; namesp的定义&#xff1a;定义命名空间&#xff0c;需要使⽤到namespace关键字&#xff0c;后⾯跟命…

[COLM 2024] V-STaR: Training Verifiers for Self-Taught Reasoners

本文是对 STaR 的改进方法&#xff0c;COLM 是 Conference On Language Models&#xff0c;大模型领域新出的会议&#xff0c;在国际上很知名&#xff0c;不过目前还没有被列入 ccf list&#xff08;新会议一般不会列入&#xff09;&#xff1b;作者来自高校、微软研究院和 Goo…