vue3 + vuedraggable: ^4.1.0 实现列表拖拽

这个案例是利用vuedraggable渲染动态组件,

bug:拖拽失效  vue2是需要在component这个标签上v-for,vue3是不需要的

<template>
  <div>
      <div>
        <vuedraggable
          ref="drag"
          v-model="state.listComp"
          v-bind="state.dragOptions"
          :forceFallback="true"
          item-key="id"
          handle=".draggableItem"
        >
          <template #item="{ element }">
            <component
              :key="element.name"
              :is="element.name"
              v-bind="element"
              class="item"
            >
            </component>
          </template>
        </vuedraggable>
      </div>
  </div>
</template>

<script setup>
import vuedraggable from "vuedraggable";
import { reactive } from "vue";

const state = reactive({
  date: "2023-08-16",
  listComp: [
    // 数据
  ],
  dragOptions: {
    animation: 0,
    disabled: false,
    group: "description",
    ghostClass: "ghost",
  },
});

</script>

<style lang="scss" scoped><style>

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue3和Vue2一样都可以使用vuedraggable插件进行不同组件的拖拽。以下是使用vuedraggable插件实现不同组件拖拽的步骤: 1. 安装vuedraggable插件 在终端中执行以下命令: ``` npm install vuedraggable ``` 2. 引入vuedraggable插件 在需要使用vuedraggable插件的组件中引入: ```javascript import draggable from 'vuedraggable' ``` 3. 使用draggable组件 在模板中使用draggable组件,并设置相应的属性: ```html <draggable v-model="list" :element="'ul'" :options="{group:'items'}"> <li v-for="(item, index) in list" :key="item.id">{{ item.name }}</li> </draggable> ``` 其中,v-model绑定了一个数组list,用于记录拖拽后的顺序;:element指定了拖拽的元素类型,这里为ul;:options指定了拖拽的选项,这里设置了group为items,表示不同的组件可以互相拖拽。 注意:v-model绑定的数组中的元素必须要有一个唯一的标识符,用于区分不同的元素。 4. 处理拖拽事件 当拖拽完成后,可以通过监听dragend事件来处理拖拽后的逻辑: ```html <draggable v-model="list" :element="'ul'" :options="{group:'items'}" @dragend="onDragEnd"> <li v-for="(item, index) in list" :key="item.id">{{ item.name }}</li> </draggable> ``` ```javascript methods: { onDragEnd(event) { console.log(event) // 处理拖拽完成后的逻辑 } } ``` 在onDragEnd方法中,可以获取到拖拽完成后的事件对象,通过事件对象可以获取到拖拽前后的元素顺序,从而进行相应的操作。 以上就是使用vuedraggable插件实现不同组件拖拽的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr. LiangChao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值