vue3实现组件拖拽排序
时间: 2023-12-29 13:03:51 浏览: 151
Vue3 的组件拖拽排序可以通过使用 `Sortable.js` 库来实现。以下是一个简单的示例:
1. 安装 `Sortable.js` 库:
```
npm install sortablejs --save
```
2. 在需要排序的组件中导入 `Sortable.js`:
```javascript
import Sortable from 'sortablejs';
```
3. 在组件的 `mounted` 钩子中初始化排序:
```javascript
mounted() {
const el = this.$refs.sortable;
this.sortable = Sortable.create(el, {
onEnd: this.onSortEnd
});
},
```
4. 创建 `onSortEnd` 方法来处理排序结束后的逻辑:
```javascript
methods: {
onSortEnd(event) {
const itemEl = event.item;
const newIndex = event.newIndex;
// 处理排序结束后的逻辑
}
}
```
5. 在组件中添加拖拽排序的 HTML:
```html
<template>
<div ref="sortable">
<div v-for="(item, index) in items" :key="item.id">
{{ item.text }}
</div>
</div>
</template>
```
在以上代码中,`items` 是一个数组,包含需要排序的项目。将 `items` 数组绑定到组件的属性中即可。
完整的代码示例:
```javascript
<template>
<div ref="sortable">
<div v-for="(item, index) in items" :key="item.id">
{{ item.text }}
</div>
</div>
</template>
<script>
import Sortable from 'sortablejs';
export default {
data() {
return {
items: [
{ id: 1, text: 'Item 1' },
{ id: 2, text: 'Item 2' },
{ id: 3, text: 'Item 3' },
{ id: 4, text: 'Item 4' }
],
sortable: null
};
},
mounted() {
const el = this.$refs.sortable;
this.sortable = Sortable.create(el, {
onEnd: this.onSortEnd
});
},
methods: {
onSortEnd(event) {
const itemEl = event.item;
const newIndex = event.newIndex;
// 处理排序结束后的逻辑
}
}
};
</script>
```
阅读全文