React 基于Ant Degisn 实现table表格列表拖拽排序

效果图:

 代码:

myRow.js

import { MenuOutlined } from '@ant-design/icons';
import { DndContext } from '@dnd-kit/core';
import { restrictToVerticalAxis } from '@dnd-kit/modifiers';
import {arrayMove,SortableContext,useSortable,verticalListSortingStrategy,
} from '@dnd-kit/sortable';
import { CSS } from '@dnd-kit/utilities';
import React, { useState } from 'react';
const myRow = ({ children, ...props }) => {const {attributes,listeners,setNodeRef,setActivatorNodeRef,transform,transition,isDragging,} = useSortable({id: props['data-row-key'],});const style = {...props.style,transform: CSS.Transform.toString(transform && {...transform,scaleY: 1,},),transition,...(isDragging? {position: 'relative',zIndex: 1,}: {}),};return (<tr {...props} ref={setNodeRef} style={style} {...attributes}>{React.Children.map(children, (child) => {if (child.key === 'sort') {return React.cloneElement(child, {children: (<MenuOutlinedref={setActivatorNodeRef}style={{touchAction: 'none',cursor: 'move',}}{...listeners}/>),});}return child;})}</tr>);
};export default myRow;

index.js

import myRow from './myRow';export default () => {const [tableDatasource, setTableDatasource] = useState([]);const tableColumns = [{key: 'sort',width: 20},{title: '印章类型名称',dataIndex: 'yzTypeName',key: 'yzTypeName',width: 150,},{title: '操作人',dataIndex: 'operator',key: 'operator',width: 150,},{title: '操作时间',dataIndex: 'operateDate',key: 'operateDate',width: 150,},{title: "操作",key: "action",width: 100,render: (text, record, index) => {return (<Space size="middle"><a onClick={event => {tableUpdateAction(record);}}>修改</a><Popconfirmtitle="删除印章类别"description="确定要删除吗?"onConfirm={tableDeleteAction.bind(this, record)}onCancel={tableCancelDeleteAction}okText="删除"cancelText="取消"><a>删除</a></Popconfirm></Space>)}}];//注在后端返回的每个对象中,新增一个key 属性 useEffect(() => {getYzTypeList(screeningDate).then((res) => {if (res.code === 200) {const updatedList = res.data.list.map((item, index) => ({...item,key: index + 1,}));setTableDatasource(updatedList);setMyTotal(res.data.total);// message.success("印章类型管理 - 数据已更新");}});}, [screeningDate]);const onDragEnd = ({active, over}) => {if (active.id !== over?.id) {setTableDatasource((previous) => {const activeIndex = previous.findIndex((i) => i.key === active.id);const overIndex = previous.findIndex((i) => i.key === over?.id);return arrayMove(previous, activeIndex, overIndex);});const activeId = active.id;const overId = over?.id;// 在 datasource 中找到匹配 activeId 和 overId 的项const activeItem = tableDatasource.find(item => item.key === activeId);const overItem = tableDatasource.find(item => item.key === overId);}};return (<div><div style={{marginTop: 10}}><DndContext modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}><SortableContextitems={tableDatasource.map((i) => i.key)}strategy={verticalListSortingStrategy}><Tablecomponents={{body: {row: myRow,},}}rowKey="key"columns={tableColumns} dataSource={tableDatasource} size={"middle"}pagination={false}/></SortableContext></DndContext></div></div>);
};

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

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

相关文章

探案录 | 人大金仓一个底座+多场景应用

近日&#xff0c;金仓大世界发布了《2023城市数字经济发展报告》&#xff0c;福尔摩斯•K从报告中抓住了三大重点&#xff1a;第一&#xff0c;数字经济规模超过50万亿元&#xff0c;占GDP比重提升至41.5%&#xff1b;第二&#xff0c;数字经济与实体经济融合愈发紧密&#xff…

阿赵UE学习笔记——10、Blender材质和绘制网格体

阿赵UE学习笔记目录   大家好&#xff0c;我是阿赵。   之前介绍了虚幻引擎的材质和材质实例。这次来介绍一个比较有趣的内置的Blender材质。   在用Unity的时候&#xff0c;我做过一个多通道混合地表贴图的效果&#xff0c;而要做过一个刷顶点颜色混合地表和水面的效果。…

【深度学习目标检测】十六、基于深度学习的麦穗头系统-含GUI和源码(python,yolov8)

全球麦穗检测是植物表型分析领域的一个挑战&#xff0c;主要目标是检测图像中的小麦麦穗。这种检测在农业领域具有重要意义&#xff0c;可以帮助农民评估作物的健康状况和成熟度。然而&#xff0c;由于小麦麦穗在视觉上具有挑战性&#xff0c;准确检测它们是一项艰巨的任务。 全…

记redis5.x在windows上搭建集群(六主六从)

六个运行端口 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 1、安装redis,文章太多不多BB 2、复制六份redis文件夹出来改名 3、修改每一份的配置文件 redis.windows.conf 修改为以下格式&#xff1a; #运行端口 port…

CAN记录仪在矿卡中的应用

CAN数据记录仪在矿卡中主要用于记录和监控车辆的运行数据&#xff0c;以保障安全和提高运营效率。那么就需要记录整车数据来进行车辆诊断分析&#xff0c;查找问题解决问题。 CAN数据记录仪可以记录矿卡的各种运行参数&#xff0c;如发动机转速、车速、制动状态、转向状态、油…

《WebKit 技术内幕》之二: HTML 网页和结构

第二章 HTML 网页和结构 HTML网页是利用HTML语言编写的文档&#xff0c;HTML是半结构化的数据表现方式&#xff0c;它的结构特征可以归纳为&#xff1a;树状结构、层次结构和框结构。 1.网页构成 1.1 基本元素和树状结构 HTML网页使用HTML语言撰写的文档&#xff0c;发展到今…

渗透测试之Kali如何利用CVE-2019-0708漏洞渗透Win7

环境: 1.攻击者IP:192.168.1.10 系统: KALI2022(vmware 16.0) 2.靶机IP:192.168.1.8 系统:Windows 7 6.1.7601 Service Pack 1 Build 7601 已开启远程协助RDP服务开启了3389端口 问题描述: KALI 如何利用CVE-2019-0708漏洞渗透Win7 解决方案: 1.打开kali,msf搜索…

使用WAF防御网络上的隐蔽威胁之SSRF攻击

服务器端请求伪造&#xff08;SSRF&#xff09;攻击是一种常见的网络安全威胁&#xff0c;它允许攻击者诱使服务器执行恶意请求。与跨站请求伪造&#xff08;CSRF&#xff09;相比&#xff0c;SSRF攻击针对的是服务器而不是用户。了解SSRF攻击的工作原理、如何防御它&#xff0…

redis数据安全(一)数据持久化

一、Redis数据安全措施: 1、将数据持久化至硬盘 2、将数据复制至其他机器&#xff1b; 复制是在数据持久化的基础上进行的。 二、将数据持久化至硬盘 1、介绍&#xff1a;Redis是一个基于内存的数据库&#xff0c;它的数据是存放在内存中&#xff0c;内存有个问题就是关闭…

2018年认证杯SPSSPRO杯数学建模A题(第一阶段)海豚与沙丁鱼全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 探究海豚猎捕时沙丁鱼群的躲避运动模型 A题 海豚与沙丁鱼 原题再现&#xff1a; 沙丁鱼以聚成大群的方式来对抗海豚的捕食。由于水下光线很暗&#xff0c;所以在距离较远时&#xff0c;海豚只能使用回声定位方法来判断鱼群的整体位置&#xf…

配网故障定位装置:未来发展趋势与挑战

在电力系统中&#xff0c;恒峰智慧科技设计的配网故障定位装置是一个至关重要的设备&#xff0c;它可以帮助我们快速准确地找到故障发生的位置&#xff0c;从而进行有效的维修。随着科技的发展&#xff0c;这种设备也在不断地进步和改进。本文将探讨配网故障定位装置的未来发展…

回归预测 | Matlab实现MSADBO-CNN-LSTM基于改进蜣螂算法优化卷积神经网络-长短期记忆神经网络多特征回归预测

回归预测 | Matlab实现MSADBO-CNN-LSTM基于改进蜣螂算法优化卷积神经网络-长短期记忆神经网络多特征回归预测 目录 回归预测 | Matlab实现MSADBO-CNN-LSTM基于改进蜣螂算法优化卷积神经网络-长短期记忆神经网络多特征回归预测预测效果基本描述程序设计参考资料 预测效果 基本描…

行为型设计模式——中介者模式

中介者模式 中介者模式主要是将关联关系由一个中介者类统一管理维护&#xff0c;一般来说&#xff0c;同事类之间的关系是比较复杂的&#xff0c;多个同事类之间互相关联时&#xff0c;他们之间的关系会呈现为复杂的网状结构&#xff0c;这是一种过度耦合的架构&#xff0c;即…

【软件测试学习笔记6】Linux常用命令

格式 command [-options] [parameter] command 表示的是命令的名称 []表示是可选的&#xff0c;可有可无 [-options]&#xff1a;表示的是命令的选项&#xff0c;可有一个或多个&#xff0c;也可以没有 [parameter]&#xff1a;表示命令的参数&#xff0c;可以有一个或多…

包含广告或宣传性质的内容或参考资料不对应,百度百科词条怎么改

想要修改百度百科词条&#xff0c;却发现在编辑百度百科词条时经常提示“包含广告或宣传性质的内容”&#xff0c;又或者经常遇到“参考资料不对应”的情况&#xff0c;我们该如何正确修改百度百科词条才能推广&#xff0c;洛希爱做百科网为大家分享。 修改百科百度百科词条提示…

无法打开浏览器开发者工具的可能解决方法

网页地址: https://jx.xyflv.cc/?url视频地址url 我在抖音里面抓了一个视频地址, 获取到响应的json数据, 找到里面的视频地址信息 这个网站很好用: https://www.jsont.run/ 可以使用js语法对json对象操作, 找到所有视频的url地址 打开网页: https://jx.xyflv.cc/?urlhttps:…

橘子学Mybatis07之Mybatis关于缓存的设计

很逆天的一件事是&#xff0c;我上一次发mybatis是在2022年10月15号&#xff0c;然后直到今天才开始总结下一篇Mybatis的东西。一年里面忙成那啥了&#xff0c;而且重心都投入在了Elasticsearch的学习上面&#xff0c;基本一年下来都在搞ES&#xff0c;并且考下了ECE认证&#…

Java 方法中参数类型后写了三个点?什么意思?

1、...代表什么意思&#xff1f; 2、如何使用 3、注意事项 4、两个list&#xff0c;一个新的&#xff0c;一个旧的&#xff0c;旧列表中可能有新列表中存在的数据&#xff0c;也可能存在新列表中不存在的数据&#xff08;注&#xff1a;新旧列表中都不存在重复元素&#xff09;…

运动蓝牙耳机选购指南,2024年蓝牙运动耳机品牌推荐

​运动耳机不仅要具备防水防汗能力&#xff0c;还要有稳定的连接性能和出色的音质。面对市场上琳琅满目的运动耳机&#xff0c;如何选择成为了一个问题。今天&#xff0c;我将为你推荐几款在运动中表现不错的耳机&#xff0c;它们能在各种环境中提供稳定可靠的音乐体验。 1.南…

Spring之AOP源码(二)

书接上文 文章目录 一、简介1. 前文回顾2. 知识点补充 二、ProxyFactory源码分析1. ProxyFactory2. JdkDynamicAopProxy3. ObjenesisCglibAopProxy 三、 Spring AOP源码分析 一、简介 1. 前文回顾 前面我们已经介绍了AOP的基本使用方法以及基本原理&#xff0c;但是还没有涉…