当前位置: 首页 > news >正文

React结合antd5实现整个表格编辑

通过react hooks 结合antd的table实现整个表格新增编辑。
在这里插入图片描述

引入组件依赖

import React, { useState } from 'react';
import { Table, InputNumber, Button, Space, Input } from 'antd';

定义数据

const originData = [{ key: 1, name: '白银会员', value: 0, equity: 0, reward: 0 },{ key: 2, name: '黄金会员', value: 500, equity: 2, reward: 1 },{ key: 3, name: '钻石会员', value: 1000, equity: 4, reward: 1 },{ key: 4, name: '至尊会员', value: 1500, equity: 1, reward: 0 },
];

编辑表格时触发(函数体外)

const EditableCell = ({dataIndex,rowIndex,title,record,index,children,isEdit,data,handChange,...restProps
}) => {return (<td {...restProps}>{isEdit ? (// 这里可以自定义需要的类型进行处理<Input defaultValue={data[rowIndex][dataIndex]} onChange={(e) => handChange(e.target.value, rowIndex, dataIndex)} />) : (children)}</td>);
};

定义函数体

export default function GradeSet() {//旧数据const [data, setdata] = useState(originData);//是否编辑const [isEdit, setisEdit] = useState(false);//新数据const [temData, settemData] = useState(originData);const columns = [{title: '等级名称',dataIndex: 'name',editable: true,},{title: '升级条件',dataIndex: 'value',editable: true,},{title: '等级权益',dataIndex: 'equity',editable: true,},{title: '升级奖励',dataIndex: 'reward',editable: true,},]const mergedColumns = columns.map(col => {if (!col.editable) {return col;}return {...col,onCell: (record, rowIndex) => ({record,rowIndex,dataIndex: col.dataIndex,title: col.title,isEdit: isEdit,data: temData,handChange}),};});//取消const handleCancel = () => {settemData(data)setisEdit(false)}//保存const handleSave = () => {setdata(temData);setisEdit(false);}//改变时const handChange = (value, rowIndex, dataIndex) => {const otherData = JSON.parse(JSON.stringify(temData));otherData[rowIndex][dataIndex] = value;settemData(otherData)}// 添加const handleAdd = () => {const newData = [...temData];newData.push({ key: temData.length + 1, name: `${temData.length + 1} 会员`, value: 0, equity: 0, reward: 0 },)console.log(newData)settemData(newData);}// 删除const handleDelete = () => {const newData = [...temData];newData.pop();settemData(newData);}return (<div><div className={`headTitle`}><p>数据列表</p>{isEdit ?<Space><Button onClick={() => handleCancel()}>取消</Button><Button type="primary" onClick={() => handleSave()}>保存</Button></Space>:<Button onClick={() => setisEdit(true)}>编辑</Button>}</div><Tablecomponents={{ body: { cell: EditableCell } }}bordereddataSource={temData}columns={mergedColumns}rowClassName="editable-row"pagination={false}/>{isEdit ?<Space className={s.bottom}><Button type="primary" onClick={() => handleAdd()}>添加等级</Button><Button danger onClick={() => handleDelete()}>删除最高等级</Button><p>修改等级获得条件的成长值后,部分客户会因无法达到该成长值要求而发生会员等级的变化</p></Space>:null}</div>);
}

样式

.headTitle {padding: 0 16px;display: flex;justify-content: space-between;align-items: center;color: #666;height: 50px;line-height: 50px;background: #f0f0f0;
}

相关文章:

React结合antd5实现整个表格编辑

通过react hooks 结合antd的table实现整个表格新增编辑。 引入组件依赖 import React, { useState } from react; import { Table, InputNumber, Button, Space, Input } from antd;定义数据 const originData [{ key: 1, name: 白银会员, value: 0, equity: 0, reward: 0…...

【C++进阶之路】第八篇:智能指针

文章目录 一、为什么需要智能指针&#xff1f;二、内存泄漏1.什么是内存泄漏&#xff0c;内存泄漏的危害2.内存泄漏分类&#xff08;了解&#xff09;3.如何检测内存泄漏&#xff08;了解&#xff09;4.如何避免内存泄漏 三、智能指针的使用及原理1.RAII2.智能指针的原理3.std:…...

保护服务器免受攻击:解析攻击情境与解决之道

在数字化时代&#xff0c;服务器安全问题日益突出&#xff0c;因为它们是企业和个人网络活动的核心。服务器被攻击可能引发一系列问题&#xff0c;理解攻击的不同情境以及采取相应的解决方法变得至关重要。 DDoS 攻击&#xff08;分布式拒绝服务攻击&#xff09; 情境&#xff…...

Python 获取两个数组中各个坐标点对之间最短的欧氏距离

Python 获取两个数组中各个坐标点对之间最短的欧氏距离 代码如下: import numpy as np from scipy import spatialxy1 = np.array([[243, 3173],[525, 2997]]...

假ArrayList导致的线上事故......

假ArrayList导致的线上事故… 线上事故回顾 晚饭时&#xff0c;当我正沉迷于排骨煲肉质鲜嫩&#xff0c;汤汁浓郁时&#xff0c;产研沟通群内发出一条消息&#xff0c;显示用户存在可用劵&#xff0c;但进去劵列表却什么也没有&#xff0c;并附含了一个视频。于是我一边吃了排…...

K8S精进之路-控制器Deployment-(1)

在K8S中&#xff0c;最小运行单位为POD,它是一个逻辑概念&#xff0c;其实是一组共享了某些资源的容器组。POD是能运行多个容器的&#xff0c;Pod 里的所有容器&#xff0c;共享的是同一个 Network Namespace&#xff0c;并且可以声明共享同一个 Volume。在POD中能够hold住网络…...

flutter iOS 视频mov格式转MP4格式

flutter iOS 视频mov格式转MP4格式 前言一、使用video_compress压缩视频总结 前言 今天在写项目的时候&#xff0c;突然发现iOS 里面的有些视频格式是mov的格式&#xff0c;这就导致在视频播放组件无法播放的问题&#xff0c;期间试过替换视频格式&#xff0c;但是又不想存储文…...

datafilecopy header validation failure for file +DATA/orcl/datafile/file1.ora

环境 linux 6.8 oracle 11.2.0.4 rac 未打补丁 现象&#xff1a; 数据库日志中显示 datafilecopy header validation failure for file DATA/orcl/datafile/file1.ora原因 用rman的backup as copy 对数据文件进行了copy或者叫位置更改时候&#xff0c;在sqlplus中对文件名进行…...

[机缘参悟-119] :一个IT人的反思:反者道之动;弱者,道之用 VS 恒者恒强,弱者恒弱的马太效应

目录 前言&#xff1a; 一、道家的核心思想 二、恒者恒强&#xff0c;弱者恒弱的马太效应 三、马太效应与道家思想的统一 3.1 大多数的理解 3.2 个人的理解 四、矛盾的对立统一 前言&#xff1a; 马太效应和强弱互转的道家思想&#xff0c;都反应了自然规律和社会规律&…...

CentOS用nginx搭建文件下载服务器

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器&#xff0c;而且支持热部署&#xff0c;几乎可以做到 7 * 24 小时不间断运行&#xff0c;即使运行几个月也不需要重新启动。在工作中&#xff0c;我们经常会用到需要搭建文件服务器的情况&#xff0c;这里就以在linux下搭…...

Ubuntu下载离线安装包

旧版Ubuntu下载地址 https://old-releases.ubuntu.com/releases/ 下载离线包 sudo apt-get --download-only -odir::cache/ncayu install net-tools下载snmp离线安装包 sudo apt-get --download-only -odir::cache/root/snmp install snmp snmpd snmp-mibs-downloadersudo a…...

【UE】线框材质

一、方式1 新建一个材质&#xff0c;混合模式设置为“已遮罩”&#xff0c;勾选“双面” 勾选“线框” 然后可以随便给一个自发光颜色&#xff0c;这样最基本的线框材质就完成了 二、方式2 新建一个材质&#xff0c;混合模式设置为“已遮罩”&#xff0c;勾选“双面”&#x…...

物联网网关在工业行业的应用与优势

物联网网关在工业行业的应用与优势 随着科技的发展&#xff0c;物联网&#xff08;IoT&#xff09;在各个行业得到了广泛应用。工业行业是其中的一个重要领域。工业行业涉及到许多生产和运输环节&#xff0c;需要不断地监测和控制各个环节的数据和参数。物联网网关&#xff08…...

【excel技巧】单元格内的公式如何隐藏?

Excel文件中最重要的除了数据还有就是一些公式了&#xff0c;但是只要点击单元格&#xff0c;公式就能显示出来&#xff0c;如果不想别人看到公式应该如何设置呢&#xff1f;今天分享隐藏excel单元格数据的方法。 选中单元格&#xff0c;点击右键打开【设置单元格格式】&#x…...

展开语法、剩余语法

展开语法定义 展开语法Spread Syntax&#xff0c;可以在函数调用/数组构造时&#xff0c;将数组表达式或者string在语法层面展开&#xff1b;还可以在构造字面量对象时&#xff0c;将对象表达式按照key-value的方式展开。&#xff08;字面量一般指[1, 2, 3]或者{name:"md…...

MongoDB归并连续号段-(待验证)

实现按照不同条件归并连续号段的方式与具体的数据模型和查询需求有关&#xff0c;以下是一种常见的方式&#xff1a; 假设有一个文档集合&#xff0c;包含如下字段&#xff1a; {"_id": ObjectId("613c3050d5d9b45a0de7c290"),"group": "…...

【每日一题】设计循环队列(C语言)

循环队列是我们可以对队列有更深一步的理解的题目&#xff0c;而且可以进一步加强其他方面的知识&#xff08;例如对循环数组的取模运算&#xff0c;指针的解引用&#xff09;&#xff0c;是个蛮不错的巩固习题&#xff0c;话不多说&#xff0c;进入正题。 链接在此&#xff1…...

logic-flow 使用过程中遇到的bug - 拖动节点到画布的时候,鼠标松开,节点不落在画布,仍旧跟着鼠标走

背景&#xff1a; 插件&#xff1a;logicFlow 用途&#xff1a;画流程图 bug表现&#xff1a; 初始化的样子&#xff1a; bug的样子&#xff1a; 拖动第一个节点的时候&#xff0c;一切正常&#xff08;无论哪个节点作为第一个节点&#xff0c;都是正常的&#xff0c;但是拖动…...

el-tree结合el-switch实现状态切换

<template><div><el-col :span"24"><el-card class"tree-card"><div class"sketch_content selectFile"><span class"span_title">组织列表 </span><div style"display: flex; jus…...

汽车智能座舱/智能驾驶SOC -1

看到华为&小康的 AITO问界M6、M7各种广告营销、宣传、测评、好评如潮水般席卷网络各APP平台。翻看了中信和海通对特斯拉M3和比亚迪元的拆解报告&#xff0c;也好奇华为的汽车芯片平台又能做出哪些新花样&#xff0c;下面是Mark开头&#xff0c;也学习下智能座舱和智能驾驶芯…...

AI编程任务交接技能:高效上下文转移与团队协作实践

1. 项目概述&#xff1a;为什么我们需要“任务交接”这个技能在AI辅助编程的日常里&#xff0c;我们常常陷入一种困境&#xff1a;一个调试会话&#xff08;Session&#xff09;越拉越长&#xff0c;对话历史里混杂着尝试过的命令、失败的日志、临时的假设、以及最终找到的那一…...

大模型时代,软件测试的“变”与“不变”

随着大语言模型技术的爆发式演进&#xff0c;软件测试领域正经历一场前所未有的深度变革。从传统的脚本化验证到如今的智能体驱动测试&#xff0c;大模型不仅重塑了测试工具链&#xff0c;更在根本上动摇了沿用数十年的测试方法论。对于广大软件测试从业者而言&#xff0c;我们…...

【保姆级教程】不装 Anaconda,用 OpenFiles 三分钟打开 / 编辑 .ipynb,还能让 AI 直接改代码

以前打开一个 .ipynb&#xff08;Jupyter Notebook&#xff09;文件&#xff0c;要装 Python、装 Jupyter、配环境&#xff0c;劝退一大批刚入门的同学。这篇文章手把手教你用 OpenFiles&#xff1a;双击打开、自带 Python 内核、支持新建和编辑 cell、自动渲染表格 / 图表 / L…...

3分钟掌握抖音批量下载:从手动复制到智能获取的全新工作流

3分钟掌握抖音批量下载&#xff1a;从手动复制到智能获取的全新工作流 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...

开源免费的WPS AI 软件 察元AI文档助手:链路 053:AIAssistantDialog 选区翻译的 streamChatCompletion

链路 053&#xff1a;AIAssistantDialog 选区翻译的 streamChatCompletion 总体链路图 下图在全系列各篇保持一致&#xff0c;仅通过高亮样式标示本篇所覆盖的环节&#xff1b;箭头表示主成功路径&#xff0c;点线为异常或可选路径。阅读任意一篇时都应能回到本图定位&#x…...

九大网盘直链解析工具完整指南:告别下载限速,轻松获取高速下载链接

九大网盘直链解析工具完整指南&#xff1a;告别下载限速&#xff0c;轻松获取高速下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘…...

告别本地开发:用code-server在云服务器上搭建你的专属Web版VSCode(保姆级教程)

云端开发革命&#xff1a;用code-server构建高性能远程编程环境 坐在咖啡馆里&#xff0c;用iPad Pro流畅地调试一个百万行代码的机器学习项目&#xff1b;在出差的高铁上&#xff0c;用Chromebook继续昨晚未完成的微服务架构改造——这听起来像是科幻场景&#xff0c;但借助co…...

IP5413V 集成 30V 高耐压和 500mA 充电 200mA 放电的TWS 充电盒 SOC

1 特性  同步开关放电  200mA 同步升压转换  升压效率最高达 95%  内置电源路径管理&#xff0c;支持边充边放  充电  最大 500mA 线性充电&#xff0c;充电电流可定制  自动调节充电电流&#xff0c;匹配适配器输出能力  支持 4.20V、4.30V、4.35V 和 4.40V 电…...

别再为YDLIDAR X3的ROS驱动发愁了!保姆级从SDK编译到Rviz可视化的完整避坑指南

YDLIDAR X3激光雷达ROS驱动全流程实战&#xff1a;从零配置到Rviz可视化避坑手册 第一次把YDLIDAR X3激光雷达接入ROS时&#xff0c;我盯着终端里密密麻麻的报错信息足足发呆了半小时——明明是按照官方文档一步步操作&#xff0c;却在编译阶段就卡壳。这种经历想必很多机器人…...

智能矩阵大灯核心技术解析:从图形MCU到百万像素LED驱动的工程实践

1. 项目概述&#xff1a;从“照亮”到“沟通”的智能车灯革命如果你和我一样&#xff0c;在汽车电子行业摸爬滚打了十几年&#xff0c;就会深刻感受到&#xff0c;汽车安全的演进史&#xff0c;本质上是一部感知与交互技术的进化史。从最初的被动安全&#xff08;安全带、气囊&…...