Vue3中优雅地实现表格拖动排序功能

文章目录

  • 1. 安装 sortablejs
  • 2. 初始化表格数据
  • 3. 使用 sortablejs
    • 3.1 导入 sortablejs
    • 3.2 使用 sortablejs 创建拖动表格方法
    • 3.3 在周期函数中调用方法
    • 3.4 销毁实例
  • 4. 完整代码

在这里插入图片描述
在 Vue.js 中主要通过第三方库实现表格拖动排序功能,其中最常用的库是 SortableJS。

1. 安装 sortablejs

npm i sortablejs --save

2. 初始化表格数据

这里使用 ElementPlus 作为前端组件库

注意要给 el-table 绑定 row-key 属性,并设置 ref。

 <el-table
    ref
Vue3中,使用Sortable库来实现表格(table)的拖拽排序功能非常方便。Sortable是一个强大的JavaScript库,用于创建可交互的拖放排序功能。以下是使用Sortable的主要步骤: 1. 安装Sortable库: 首先需要安装`@Sortablejs/sortablejs`库,可以使用npm或yarn命令行工具: ```bash npm install @sortablejs/sortablejs ``` 2. 引入并配置Sortable: 在你的组件文件中,引入Sortable并设置其选项: ```javascript import { Sortable } from &#39;@sortablejs/react&#39;; import SortableJS from &#39;sortablejs&#39;; // ... export default { setup() { const items = [ // 这里是你表格数据的对象数组,每个对象都有一个用于排序的键 { id: 1, name: &#39;Item 1&#39; }, { id: 2, name: &#39;Item 2&#39; }, // ... ]; // 初始化Sortable实例,传入items和排序规则 const sortableItems = Sortable.create(items, { group: &#39;__item__&#39;, // 设置排序组名,防止跨元素拖动 animation: 150, // 动画时间 onEnd: ({ newIndex }) => { // 排序完成后更新数据状态 this.items = items.slice().sort((a, b) => a.id - b.id); } }); return { sortableItems, items }; } } ``` 3. 更新HTML模板: 在模板中,绑定Sortable到表格行上: ```html <table> <tbody> <tr v-for="(item, index) in sortableItems.items" :key="item.id"> <td>{{ item.name }}</td> <!-- 或其他列 --> <td @mousedown.prevent> <draggable-item :item="item" index="index"></draggable-item> </td> </tr> </tbody> </table> ``` 4. `draggable-item`组件: 这个组件负责拖拽行为,并传递给Sortable处理: ```html <template> <div class="draggable" :data-id="item.id"> {{ item.name }} <button @dragstart.prevent>Drag</button> </div> </template> <script> export default { props: [&#39;item&#39;, &#39;index&#39;] }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bjzhang75

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值