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

Vue使用Sortablejs拖拽排序 视图显示与数据不一致、拖拽结束后回跳问题

官网:Sortable.js中文网

  注意:拖拽一定不能用index作为key,也不建议用item,否则会出现视图显示与数据不一致/回跳,建议用唯一值ID;


安装

npm install sortablejs --save

引入

import GapLine from '@/components/GapLine.vue';

使用

<template><!-- 菜单分组容器,ref用于获取DOM节点 --><view class="menu-group group-list" ref="sortGroupRef"><!-- 遍历显示菜单项,使用item作为key(实际开发建议用唯一ID) --><view class="menu-item flex-y-center" v-for="(item, index) in showList" :key="item"  <!-- 注意:拖拽一定不能用index作为key,否则会回跳 -->><!-- 菜单项内容 -->{{ item }}</view></view>
</template><script>
// 引入拖拽排序库
import Sortable from 'sortablejs';export default {data() {return {// 菜单数据列表showList: ['自建菜单1', '自建菜单2', '自建菜单3', '自建菜单4'],}},// 生命周期:页面渲染完成时onReady() {// 等待下一个DOM更新周期,确保DOM已渲染this.$nextTick(() => {// 获取容器DOM节点(注意:uni-app中需要通过$el获取原生DOM)const sortEl = this.$refs.sortGroupRef.$el;// 初始化Sortable拖拽实例new Sortable(sortEl, {group: 'group-list',     // 定义可拖拽组(允许多列表间拖拽)draggable: '.menu-item', // 指定可拖拽的子元素类名handle: '.sort-button',  // 指定拖拽手柄元素类名(需在template中添加对应元素)animation: 200,          // 拖拽动画时长(ms)// 拖拽结束回调onEnd: ({ newIndex, oldIndex }) => {// 获取被拖拽的元素const item = this.showList[oldIndex];// 从原位置删除元素this.showList.splice(oldIndex, 1);// 在新位置插入元素this.showList.splice(newIndex, 0, item);},});});},
}
</script>

 注意:拖拽一定不能用index作为key,也不建议用item,否则会回跳,建议用唯一值ID;

http://www.xdnf.cn/news/206515.html

相关文章:

  • 4.27搭建用户界面
  • PostgreSQL数据库批量删除唯一索引
  • 【AI】OrinNX上安装RIVA-2.19.0,实现文本转语音
  • Spring Boot 集成 ActiveMQ 实现异步消息通信(二)
  • Sce2DriveX: 用于场景-到-驾驶学习的通用 MLLM 框架——论文阅读
  • Tauri 跨平台开发指南及实战:用前端技术征服桌面应用(合集-万字长文)
  • 前端安全中的XSS(跨站脚本攻击)
  • 【3dmax笔记】010: 创建标准基本体、扩展基本体
  • Liunx安装Apache Tomcat
  • 阿里云服务迁移实战: 04-IP 迁移
  • Python 环境管理工具使用差别比对文档
  • 扣子智能体2:优化提示词
  • Python 重构“策略”模式:用函数简化设计模式的实践
  • Python在自动驾驶仿真环境中的应用:构建智能驾驶的虚拟世界
  • Java Properties 类详解
  • 「Mac畅玩AIGC与多模态07」开发篇03 - 开发第一个 Agent 插件调用应用
  • 嵌入式设备异常掉电怎么办?
  • 如何查看k8s获取系统是否清理过docker镜像
  • CISC与RISC详解:定义、区别及典型处理器
  • DDoS vs CC攻击:哪种对服务器威胁更大?
  • 最新字节跳动运维云原生面经分享
  • 【工具】PDF转HTML
  • 2025 TK ads短视频广告投放策略多维度解析
  • 针对Linux挂载NAS供Minio使用及数据恢复的需求
  • git配置SSH KEY
  • 业务层在事务中高频创建动态表然后删除或者回滚导致 pg_dump 概率出现备份失败问题分析
  • Neo4j 的 `SET n += $properties` 语法详解
  • Prometheus监控
  • 1.4 点云数据获取方式——结构光相机
  • 面向网络安全的开源 大模型-Foundation-Sec-8B