el-tree树形结构拖拽层级错乱问题

背景:

项目中有个文件夹树形菜单,并且各级菜单中的子级元素是可以任意拖拽的,也就是树形结构拖拽修改分组。

问题分析:

出现拖拽层级错乱的问题,这通常意味着在进行节点拖拽操作后,树的层级关系没有正确地被维护。这可能是因为在更新节点位置时,后端处理逻辑不正确,或者是前端在更新UI层级时出现了错误。

首先我们使用的是饿了么组件中的[el-tree]组件,只需要加上一个属性可启动拖拽功能:

两种方向情况:
第一种情况:拖拽到某个节点的前后(before/after)
另外一种情况是拖拽到某个节点的内部

我的项目中,树形结构的分层是通过parentid的,遍历循环展示树形组件节点,生成对应的每一级节点层级;响应树形组件节点拖拽时的选定操作,因为el-tree会记录最后一次的拖拽位置,所以使用一个方法配合(node-drag-end),共提供四个参数,依次为:被拖拽节点对应的 Node、结束拖拽时最后进入的节点(可能为空)、被拖拽节点的放置位置(before、after、inner)、event;给这个事件赋值一个变量名为nodeDragendclick,根据提供的前三个参数配合使用,我们停止拖动,默认生成第三个参数值,依据第三个参数的返回值判断被拖拽节点放置的位置方向,若方向值为"before"或"after",则视为同级调整,那么被拖拽节点的parentid就等于目标节点的parentid;反之第三个参数的返回值为inner,则为内部调整,那么被拖拽节点的parentid等于目标节点的id。

相关推荐
黑客老李1 分钟前
EDUSRC:智慧校园通用漏洞挖掘(涉校园解决方案商)
服务器·前端·网络·安全·web安全
拾光拾趣录2 分钟前
Vue依赖收集机制:响应式原理的核心实现
前端·vue.js
Mintopia3 分钟前
Three.js ArrowHelper:三维世界里的 “方向向导”
前端·javascript·three.js
归于尽4 分钟前
浏览器和 Node.js 的 EventLoop,原来差别这么大
前端·node.js·浏览器
雲墨款哥5 分钟前
Vue 3 路由管理实战:从基础配置到性能优化
前端·vue.js
Jacob02349 分钟前
JavaScript 模块系统二十年:混乱、分裂与出路
前端·javascript
独立开阀者_FwtCoder14 分钟前
Vite Devtools 要发布了!期待
前端·面试·github
独立开阀者_FwtCoder15 分钟前
国外最流行的 UI 组件库!适配 Vue、React、Angular!
前端·vue.js·后端
CodeSheep22 分钟前
小米汽车这薪资是认真的吗?
前端·后端·程序员
白白李媛媛27 分钟前
上传Vue3+vite+Ts组件到npm官方库保姆级教程
前端·arcgis·npm