全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2023-11-16_听别人说Vue的拖拽库都断代了,我第一个不服

您的位置:首页 >> 新闻 >> 行业资讯

听别人说Vue的拖拽库都断代了,我第一个不服 点击小卡片参与粉丝专属福利 前言前段时间偶然翻掘金的过程中发现有人宣传 vue 的拖拽库断代了,那么我也来蹭一下热度。 SortablejsSortablejs 是一个功能强大的 JavaScript 拖拽库,并且提供了 vue 相关的组件 vue-draggable,并且在 vue3 的前期,提供了 vue-draggable-next,但是可能由于作者的生活过于繁忙的原因,这个库已经两年没有更新了,在当前 vue3 的版本中并不适用,于是乎本人突发奇想,写了一个 vue-draggable-plus(其实很久之前就写好了,没有可以宣传),它用于兼容 vue2.7 和 vue3 以上的版本,下面我们来介绍一下它。 vue-draggable-plusvue-draggable-plus 它用于延续 vue-draggable 核心理念,提供 vue 组件用于双向绑定数据列表,实现拖拽排序、克隆等功能,同时它还支持函数式、指令式的使用方式,让你使用起来更加方便,废话不多生活,我们先上图 2023-11-09 18.47.24.gif更多演示请参考:demo 安装npminstallvue-draggable-plus 使用vue-draggable-plus 支持三种使用方式:组件使用、函数式使用、指令式使用 下面我们来一一介绍: 组件式使用:它和传统的vue组件的使用方式一样,支持双向绑定数据: template VueDraggable v-model="list" :animation="150" ghostClass="ghost" @start="onStart" @update="onUpdate" div v-for="iteminlist" :key="item.id" {{item.name}} /div /VueDraggable /template scriptsetuplang="ts" import{ref}from'vue' import{typeUseDraggableReturn,VueDraggable}from'vue-draggable-plus' constlist=ref([ { name:'Joao', id:1 }, { name:'Jean', id:2 }, { name:'Johanna', id:3 }, { name:'Juan', id:4 } ]) /script stylescoped .ghost{ opacity:0.5; background:#c8ebfb; } /style 函数式使用:template div ref="el" div v-for="iteminlist" :key="item.id" {{item.name}} /div /template scriptsetuplang="ts" import{ref}from'vue' import{useDraggable}from'vue-draggable-plus' constlist=ref([ { name:'Joao', id:1 }, { name:'Jean', id:2 }, { name:'Johanna', id:3 }, { name:'Juan', id:4 } ]) constel=ref() const{start}=useDraggable(el,list,{ animation:150, ghostClass:'ghost', onStart(){ console.log('start') }, onUpdate(){ console.log('update') } }) /script stylescoped .ghost{ opacity:0.5; background:#c8ebfb; } /style 它就像你使用 vueuse 一样接受一个 element 的引用,和一个响应式列表数据 指令式使用由于指令的特殊性,指令只能绑定您在 setup 中绑定的数据,它并不能支持异步绑定数据,如果您的数据来自于异步获取,那么请您使用组件或者函数式实现 template ul v-draggable="[ list, { animation: 150, ghostClass: 'ghost', onUpdate, onStart } ]" li v-for="item in list" :key="item.id" {{ item.name }} /li /ul /template script setup lang="ts" import { ref } from 'vue' import { vDraggable } from 'vue-draggable-plus' const list = ref([ { name: 'Joao', id: 1 }, { name: 'Jean', id: 2 }, { name: 'Johanna', id: 3 }, { name: 'Juan', id: 4 } ]) function onStart() { console.log('start') } function onUpdate() { console.log('update') } /script style scoped .ghost { opacity: 0.5; background: #c8ebfb; } /style 指定目标容器在Sortablejs官方以往的Vue组件中,都是通过使用组件作为列表的直接子元素来实现拖拽列表,当我们使用一些组件库时,如果组件库中没有提供列表根元素的插槽,我们很难实现拖拽列表,vue-draggable-plus 完美解决了这个问题,它可以让你在任何元素上使用拖拽列表,我们可以使用指定元素的选择器,来获取到列表根元素,然后将列表根元素作为Sortablejs的container,我们来看一下用法: Table.vuetemplate table thead tr thId/th thName/th /tr /thead tbodyclass="el-table"--我们会将.el-table的选择器传递给vue-draggable-plus-- trv-for="iteminlist":key="item.name"class="cursor-move" td{{item.id}}/td td{{item.name}}/td /tr /tbody /table /template scriptsetuplang="ts" interfaceProps{ list:Record'name'|'id',string[] } definePropsProps() /script App.vuetemplate section div --传递.el-table作为根元素,将.el-table的子元素作为拖拽项-- VueDraggablev-model="list"animation="150"target=".el-table" Table:list="list"/Table /VueDraggable /div divclass="flexjustify-between" preview-list:list="list"/ /div /section /template scriptsetuplang="ts" import{ref}from'vue' import{VueDraggable}from'vue-draggable-plus' importTablefrom'./Table.vue' constlist=ref([ { name:'Joao', id:'1' }, { name:'Jean', id:'2' }, { name:'Johanna', id:'3' }, { name:'Juan', id:'4' } ]) /script 来看效果: 2023-11-09 19.11.29.gif结尾如果您有使用需求,请参考文档:vue-draggable-plus,当然如果您不需要高度定制化,使用 vueuse 中的 useSortable 也是一样的。 如果它对您有用,请帮忙点个star:GitHub 友情链接:svelte-draggable-plus 如果文章对你有帮助的话欢迎「关注+点赞+收藏」 阅读原文

上一篇:2024-07-03_「转」Manner,有理想的人也伤心 下一篇:2025-04-28_大学文凭成废纸?AI暴击美国00后!哥大退学成千万富翁,我却要还学贷

TAG标签:

18
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价