Vue3 使用 vuedraggable

前言

本文主要记录下 vuedraggable 在 vue2 和 vue3 中使用上的区别。

一、安装

vue2 安装命令

npm i vuedraggable -S

vue3 安装会报错:Cannot read property 'header' of undefined。安装最新版本的vuedraggable即可,命令行如下

npm i -S vuedraggable@next

二、使用

vue2 使用

<template>
  <draggable v-model="myArray">
    <div v-for="element in myArray" :key="element.id">{{element.name}}</div>
  </draggable>
</template>

<script>
import draggable from 'vuedraggable'

export default {
  components: {
    draggable
  },
  data () {
    return {
      myArray: [
        { id: 1, name: 'Jenny' },
        { id: 2, name: 'kevin' },
        { id: 3, name: 'lili' }
      ]
    }
  }
}
</script>

vue3 使用,报错 draggable element must have an item slot。正确写法如下

<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>

  • 9
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
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 ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值