3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Vue.Draggableのtagの挙動がよくわからないのでちょっとゴリ押しした

Last updated at Posted at 2020-10-13

#環境

nuxt :2.13.3
vue.js : 2.6.11
Vuetify : 2.3.4
Vue.Draggable : 2.24.0

nuxtのモード
▸ Rendering: server-side
▸ Target: server
#実現したいこと
Vuetifyのv-cardコンポーネントをVueDraggableで並べ変えたかった。

#ぶち当たった問題
このコンポーネントを

<template>
  <v-layout>
    <v-container>
      <draggable tag="v-row">
        <v-col v-for="i in 10" :key="i" cols="3" class="ma-0">
          <v-card>
            <v-card-title>
              {{ i }}
            </v-card-title>
          </v-card>
        </v-col>
      </draggable>
    </v-container>
  </v-layout>
</template>
<script>
import draggable from 'vuedraggable'
export default {
  components: {
    draggable
  }
}
</script>


yarn dev

して表示したとき
(以後開発モード)
image.png

yarn build
yarn start

して表示したとき(以後ビルドモード)

image.png

とで表示が違う。

#もっと詳しく
ChromeのDevToolsのElementsを見てみると

[開発モード]
image.png

[ビルドモード]
image.png

開発モードではv-rowコンポーネントが<div class="row">になっているが
ビルドモードではただのv-rowタグになっている

#VueDraggableのtag Propsとはなにか

tagにコンポーネントやHTMLタグを指定することによって<draggable>のをそのタグやコンポーネントに置き換えてくれるもの(だと解釈してる)
標準では<div>になる

tag="v-row"とすることで、Vuetifyのv-rowコンポーネントを指定しているはずだが、ビルドモードではなぜか反映されない。
参考

https://github.com/SortableJS/Vue.Draggable

#自分なりの解決策
表示したいhtmlは<div class"row">なので
<draggable tag="v-row"><draggable class="v-row">
に変更した。
これによって開発モードと同じ表示にすることが出来た。

この解決方法ではゴリ押しすぎる。なんか他にいい方法がアリそう……

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?