vue3 拖拽vuedraggable使用

npm install vuedraggable@next --save # vue3

页面中引入 import Draggable from "vuedraggable";

    <Draggable :list="list" :item-key="item => item.id" :animation="100" class="list-group" :forceFallback="true" chosen-class="chosenClass" group="componentsGroup">
                <template #item="{ element }">
                  <div class="item bck1 group_left_Item"   @click="handleUndistr">
                            <img :src="element.avatar == null ? man : element.avatar" alt="" class="manImage" style="width: 50px;height: 50px;">
                            <div class="name">{{ element.label }}</div>
                      </div>
                </template>
</Draggable>

.list-group{

            display: flex;

            flex-wrap: wrap;

            align-content: baseline;

        }

const list = reactive([
    {
        label: "图片1",
        img: man,
        id: 1,
    },
    {
        label: "图片2",
        img: man,
        id: 2,
    },
    {
        label: "图片3",
        img: man,
        id: 3,
    },
    {
        label: "图片4",
        img: man,
        id: 4,
    },
]);

属性(Props)

  1. list:要显示和拖放的数组,该数组中的每个项将在列表中显示。
  2. group:一个字符串或函数,用于标识可拖放元素的分组。同一分组内的元素可以互相拖放,不同分组的元素之间不可拖放。
  3. clone:一个布尔值,指定是否在拖动时创建元素的克隆。默认为false,即直接移动原始元素。
  4. transition-mode:指定在拖动时元素的过渡模式,可以是in-outout-in
  5. chosen-class:拖动时选中元素应用的 CSS 类。
  6. ghost-class:拖动时生成的占位元素应用的 CSS 类。
  7. handle:一个 CSS 选择器字符串,指定拖动手柄的元素。只有拖动手柄的部分可以用于拖动,而不是整个元素。

事件(Events)

  1. start:开始拖动时触发的事件。
  2. end:拖动结束时触发的事件,包括拖动成功或取消。
  3. add:拖动项被添加到列表时触发的事件。
  4. remove:拖动项被从列表中移除时触发的事件。
  5. update:列表中的项被重新排序时触发的事件。

方法(Methods)

  1. move:一个函数,用于自定义拖动项的移动逻辑。通过返回false或其他特定值来控制是否允许移动或进行特定位置的调整。
  2. getUnderlyingVm:一个方法,用于获取当前拖动的元素对应的 Vue 实例。
  3. getRelatedContext:一个方法,用于获取相关的列表上下文信息,包括当前列表和源列表的信息。
  4. getPointerEvent:一个方法,用于获取当前拖动操作的指针事件对象。
  5. sortableMixin:一个混入对象,提供了一些实用的方法来处理拖放逻辑。

插槽(Slots)

vuedraggable还支持一些插槽,用于自定义拖动项的展示和交互:

  1. item:用于自定义每个拖动项的展示。
  2. fallback:在不支持原生拖放API的环境中,用于自定义回退模式下的拖放效果。

样式再调一调ok了,也可多列表拖拽,:list就是接收item数据的数组

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中使用vuedraggable是一种在前端开发中实现拖拽功能的方法。根据引用,vuedraggable适合有1-3年工作经验的前端人员使用。如果在安装过程中出现报错"Cannot read property 'header' of undefined",可以尝试安装最新版本的vuedraggable,通过命令行执行npm i -S vuedraggable@next。这样可能可以解决该报错问题,参考引用提供的解决方案。 要在Vue3中使用vuedraggable,可以按照以下方式编写代码,参考引用提供的示例代码: ```javascript <template> <draggable v-model="myArray" group="people" @start="drag=true" @end="drag=false" item-key="id"> <template #item="{element}"> <div>{{element.name}}</div> </template> </draggable> </template> <script lang="ts"> import { defineComponent, reactive, toRefs } from 'vue' import draggable from 'vuedraggable' export default defineComponent({ components: { draggable }, setup () { const data = reactive({ drag: false, myArray: [ { id: 1, name: 'Jenny' }, { id: 2, name: 'kevin' }, { id: 3, name: 'lili' } ] }) return { ...toRefs(data) } } }) </script> ``` 以上代码中,通过import导入了vuedraggable组件,并在template中使用draggable标签来实现拖拽功能。在setup函数中,使用reactive将数据进行响应式处理,并通过v-model绑定到draggable组件上,实现了列表的拖拽功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3中使用vuedraggable](https://download.csdn.net/download/digital_AI/87823951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vue3 使用 vuedraggable](https://blog.csdn.net/lhz_333/article/details/123403911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值