首頁 > 軟體

詳解vue專案中使用vuedraggable

2022-05-21 16:00:17

最近在學習一個視覺化搭建的專案,裡面用的拖拽就是draggable.js。看了幾個中文的檔案,有很多坑,可能是沒有及時更新的原因。

VUe 

建議去看vuedraggable的官方檔案,只不過是英文的。官方檔案:https://github.com/SortableJS/Vue.Draggable

由於vue3已經是預設版本了,所以vuedraggable也對應vue2.0和3.0有各自的版本,直接使用基本命令安裝:

npm install vuedraggable --save

會預設安裝2.1左右的版本,由於我的專案是vue3構建的,所以會報錯:

就是draggable版本不對,導致錯誤,版本換位4.1.0的就解決了

npm i vuedraggable@4.1.0 --save 或 yarn add vuedraggable@4.1.0

在官網裡專門對vue版本的不同做了對應的解釋,在vue2中,

<draggable v-model="myArray" group="people" @start="drag=true" @end="drag=false">
   <div v-for="element in myArray" :key="element.id">{{element.name}}</div>
</draggable>
//.vue file:
  import draggable from 'vuedraggable'
  ...
  export default {
        components: {
            draggable,
        },
  ...

With transition-group:

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

 而在vue3中,這樣寫是有問題的,官網提示:

Breaking changes:

Use item slot instead of default to display elements#使用專案槽而不是預設值來顯示元素Provide a key for items using itemKey props#使用itemKey道具為物品提供金鑰

變動確實挺大的,寫法如下:

From:

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

To:

<draggable v-model="myArray" item-key="id">
  <template #item="{element}">
    <div>{{element.name}}</div>
   </template>
</draggable>

 當使用transition時,現在應該使用tag和componentData來建立transition

From

<!-- vue 2 version -->
<draggable v-model="myArray">
    <transition-group name="fade">
        <div v-for="element in myArray" :key="element.id">
            {{element.name}}
        </div>
    </transition-group>
</draggable>

to

<draggable v-model="myArray" tag="transition-group" :component-data="{name:'fade'}">
  <template #item="{element}">
    <div>{{element.name}}</div>
  </template>
</draggable>

注:在進行clone時,vue2.x版本Draggable 元件中的設定項寫法(:options="{group:{name: 'article',pull:'clone'}, sort: false}")在vue3中不起效,

vue3中需要將裡面的引數單獨進行設定,如::group="{name: 'article',pull:'clone'}"     :sort='false'  等。

到此這篇關於vue專案中使用vuedraggable的文章就介紹到這了,更多相關vue使用vuedraggable內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com