Vue开发中,列表数据的交互体验往往决定了产品的易用性,而拖拽排序正是其中使用频率非常高的能力之一。在管理后台、任务看板、图片排序、菜单配置等场景中,手动调整顺序如果没有拖拽支持,会显得非常低效。Vue生态中最成熟的解决方案之一就是基于 SortableJS 封装的 vuedraggable,它能够让拖拽排序在 Vue 中变得几乎零成本接入。
在实际项目中,很多开发者会同时使用 Vue2 和 Vue3,因此需要先明确 vuedraggable 的版本差异。Vue2 通常使用 vuedraggable@2,而 Vue3 对应的是基于 SortableJS 重构后的 vuedraggable@next,两者在组件写法上略有不同,但核心逻辑一致。
一、vuedraggable 的核心原理
vuedraggable 本质上是对 SortableJS 的 Vue 封装,通过监听 DOM 拖拽事件,自动更新绑定的数组数据。
它的核心思想很简单:
-
拖拽的是 DOM
-
更新的是数组
-
Vue 负责响应式渲染
因此无需手动操作 DOM,也不需要额外计算位置。
二、基础使用方式(Vue3)
安装依赖:
Bashnpm install vuedraggable@next sortablejs
基础示例:
vue
v-model="list" item-key="id">
#item="{ element }">
class="item">
{{ element.name }}