当前位置:
首页 > 网站开发 > JavaScript >
-
关于 antd tree 组件的推拽操作
最近项目中使用到 tree 组件的推拽操作, 按常理来说应该主要用到其中的 onDrop 事件,但其中的参数又没有详细的说明,只是在官网给了个例子,网上搜索后又没有发现到位的总结。
因此经过N次的测试,在这里总结下 onDrop 的各参数的意义及使用场景。
先看代码,在官网基础上稍有改动,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
const onDrop = (info) => { const { node, dragNode, dropPosition, dropToGap, event, dragNodesKeys } = info; // node 代表当前被drop 的对象 // dragNode 代表当前需要drop 的对象 // dropPosition 代表drop后的节点位置;不准确 // dropToGap 代表移动到非最顶级组第一个位置 const dropKey = node.key; const dragKey = dragNode.key; const dropPos = node.pos.split( '-' ); // trueDropPosition: ( -1 | 0 | 1 ) dropPosition计算前的值,可以查看rc-tree源码; // -1 代表移动到最顶级组的第一个位置 const trueDropPosition = dropPosition - Number(dropPos[dropPos.length - 1]); const data = [...gData]; loop(data, dragKey, (item, index, arr) => { arr.splice(index, 1); }); if (!dropToGap) { // 移动到非最顶级组第一个位置 loop(data, dropKey, (item) => { item.children = item.children || []; // where to insert 示例添加到头部,可以是随意位置 item.children.unshift(dragNode); }); } else { // 平级移动、交叉组移动、移动到其他组(非最顶级)非第一个位置 let ar; let i; loop(data, dropKey, (item, index, arr) => { ar = arr; i = index; }); if (trueDropPosition === -1) { // 移动到最顶级第一个位置 ar.splice(i, 0, dragNode); } else { // trueDropPosition: 1 | 0 ar.splice(i + 1, 0, dragNode); } } }; |
各参数注明到代码里面,有错误处还请各位道友多指正。
原文:https://www.cnblogs.com/weblinda/p/15239322.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式