关于 antd tree 组件的推拽操作【关于 antd tree 组件的推拽操作】最近项目中使用到 tree 组件的推拽操作 , 按常理来说应该主要用到其中的 onDrop 事件 , 但其中的参数又没有详细的说明 , 只是在官网给了个例子 , 网上搜索后又没有发现到位的总结 。
因此经过N次的测试 , 在这里总结下 onDrop 的各参数的意义及使用场景 。
先看代码 , 在官网基础上稍有改动 , 如下:
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 = https://tazarkount.com/read/[...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 | 0ar.splice(i + 1, 0, dragNode);}}};
各参数注明到代码里面 , 有错误处还请各位道友多指正 。
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
