使用Sortable.js库 实现Vue3 elementPlus 的 el-table 拖拽排序

简介: 使用Sortable.js库 实现Vue3 elementPlus 的 el-table 拖拽排序

🔥 引言

在当今高度互动的Web应用环境中,用户界面的友好性和操作便捷性是决定产品成败的关键因素之一。Vue 3与Element Plus的结合,为开发者提供了一套高效且灵活的工具集,用于构建丰富的用户界面。其中,实现表格数据的拖拽排序功能,极大地提升了用户在处理列表型数据时的操作效率与直观感受。

本文将深入浅出地介绍如何在Vue 3的Element Plus框架下的el-table组件中集成Sortable.js,解锁平滑流畅的拖拽排序体验,让数据管理变得简单直观。


🚀 实现效果


📌 Sortable.js介绍

Sortable.js 是一款强大且轻量级的JavaScript库,专为实现元素的拖放排序功能而设计。它不依赖于 jQuery 或其他大型框架,能够独立工作,并且兼容包括 IE9 及以上版本在内的现代浏览器以及移动触摸设备。这使得Sortable.js成为跨平台Web开发项目的理想选择。

该库的特点包括:

  • 广泛兼容性:支持多种浏览器环境,包括旧版IE浏览器(从IE9开始),以及各种现代浏览器,确保了良好的跨浏览器体验。
  • 框架无关Sortable.js可以直接集成到MeteorAngularJSReactVueKnockout等多种前端框架中,无需担心框架限制。
  • 触摸友好:针对移动端优化,能够在触摸屏设备上提供流畅的拖拽体验。
  • 高度可定制:提供丰富的配置选项,如动画效果、拖拽预览样式(ghostClass)、分组排序(group)等功能,允许开发者根据需求调整行为和外观。
  • 易于集成:只需引入Sortable.js文件,然后通过简单的JavaScript代码即可启用拖放排序功能,适用于列表、表格等常见布局元素。
  • 模块化设计Sortable.js采用模块化结构,开发者可以根据实际需求选择导入核心库或是包含所有插件的完整版本,有助于控制最终打包文件的大小。

通过Sortable.js,开发者可以快速实现如列表项的拖动重排、不同容器间的元素转移等常见交互需求,大大提升了Web应用的交互性和用户体验。

📌 下载依赖

npm i sortablejs @types/sortablejs

📌 添加类名

//首先给el-table 加上class="elTable"
<el-table class="elTable" :data="tableData">

📌 导入sortablejs

//导入sortablejs
import Sortable from 'sortablejs';

📌 初始化拖拽实例

const initSort = () => {
  const table = document.querySelector(".elTable .el-table__body-wrapper tbody");
  Sortable.create(table, {
    group: 'shared',
    animation: 150,
    ghostClass: 'sortable-ghost', //拖拽样式
    easing: 'cubic-bezier(1, 0, 0, 1)',
    onStart: (item: any) => {
      console.log(item);
    },
 
    // 结束拖动事件
    onEnd: (item: any) => {
      console.log(item);
      setNodeSort(item.oldIndex, item.newIndex)
    },
  })
}

📌 拖拽完成后的处理

const setNodeSort = (oldIndex: any, newIndex: any) => {
  // 使用arr复制一份表格数组数据
  const arr = xxx;
  console.log(arr);
  const currentRow = arr.splice(oldIndex, 1)[0]
  arr.splice(newIndex, 0, currentRow )
  // 原数组置空
  xxx = [];
  nextTick(async () => {
    xxx = arr;
    // 数据处理
    // ...
    // 提交后后台数据进行排序
    // ...
  });
}

📚 总结

通过对Vue 3Element Plus框架下el-table组件的深度定制,我们成功实现了拖拽排序功能,不仅丰富了用户交互方式,也显著提高了数据操作的灵活性与效率。

借助Sortable.js的强大力量,我们见证了从安装依赖添加必要的类名初始化拖拽实例,到处理拖拽完成逻辑的全过程,每一步都精心设计,确保了功能的稳定与用户体验的优化。

此番实践不仅加深了对Vue生态及第三方库整合的理解,也为开发高互动性Web应用提供了宝贵的实战经验。未来,在追求极致用户体验的道路上,持续探索和优化这样的交互细节,将是我们不断提升产品竞争力的重要途径

目录
相关文章
|
2月前
|
移动开发 JavaScript 前端开发
一些处理浏览器兼容性问题的JavaScript库
这些库在处理浏览器兼容性问题方面都有着各自的特点和优势,可以根据具体的需求和项目情况选择合适的库来使用,从而提高代码的兼容性和稳定性,为用户提供更好的体验。同时,随着浏览器技术的不断发展,还需要持续关注和学习新的兼容性解决方案。
119 48
|
3月前
|
前端开发 JavaScript 算法
使用 JavaScript 数组方法实现排序与去重
【10月更文挑战第21天】通过灵活运用 `sort()` 方法和 `filter()` 方法,我们可以方便地实现数组的排序和去重。同时,深入理解排序和去重的原理,以及根据实际需求进行适当的优化,能够更好地应对不同的情况。可以通过实际的项目实践来进一步掌握这些技巧,并探索更多的应用可能性。
122 59
|
1月前
|
JavaScript 前端开发 异构计算
兼容移动手机的js拖拽插件Draggin.js
兼容移动手机的js拖拽插件Draggin.js
37 1
|
2月前
|
JavaScript 前端开发 API
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
101 17
|
2月前
|
JavaScript 前端开发
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
|
2月前
|
CDN
如何在项目中使用Moment.js库?
如何在项目中使用Moment.js库?
|
2月前
|
JavaScript 前端开发
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
|
2月前
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
59 1
|
2月前
|
资源调度 前端开发 JavaScript
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第10天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤,包括安装依赖、创建混淆脚本、修改 `package.json` 脚本命令、构建项目并执行混淆,以及在 HTML 文件中引用混淆后的文件。通过这些步骤,可以有效提高代码的安全性。
201 2
|
2月前
|
JavaScript 前端开发 搜索推荐
Moment.js、Day.js、Miment,日期时间库怎么选?
【10月更文挑战第29天】如果你需要一个功能强大、插件丰富的日期时间库,并且对性能要求不是特别苛刻,Moment.js是一个不错的选择;如果你追求极致的轻量级和高性能,那么Day.js可能更适合你;而如果你有一些特定的日期时间处理需求,并且希望在性能和功能之间取得平衡,Miment也是可以考虑的。