質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Q&A

解決済

1回答

1034閲覧

vue.jsのv-forとtransition-groupの組み合わせが上手く行きません。

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

1グッド

0クリップ

投稿2017/12/10 15:04

編集2017/12/11 05:48

vue.js初心者です。
vue.jsのtransitionを使ってみようと思ったのですが上手くいきません。

はじめに

CodePenを参照して下さい。
赤い円と灰色の円がそれぞれ5つずつあります。
ここで「A」と「B」の間にある赤の円をクリックすると「A」と「B」の間に新たに「New6」の円が入ります。

実現したいこと

この赤円をクリックした後にアニメーションを適用させて新たな円を表示したいと思っています。
ですが、ご覧の通り今はクリックすると、パッと新たな円が表示され、一番下の円にアニメーションが適用されて再度表示されています。

挿入される円がアニメーションで表示され、
他の円はスムーズに下にずれて欲しい。
のです。

ちょうど公式ドキュメントの「Shuffle」「Add」「Remove」があるデモのようなイメージです。

試したこと

dataの組み方かaddMap関数内部のデータの追加の仕方に問題があるのかと思い、そこをいじって公式ドキュメントに大分寄せて作ってみたのですが、やはりうまくいきませんでした。

どなたかご存じの方がいらっしゃればご教示願えませんでしょうか。
よろしくお願いします。

【ベストアンサー決定後の追記】

解決はしましたが、CodePenを編集するので、同じ問題に当たった人の参考にならないので、
jsfiddleで同じものを作り直しました。

質問時のコードはこちらです。
karamarimo様の意見を参考に作ったものがこちらです。

ご参考までに。

kurosuke___👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一番下の円にアニメーションが適用されて再度表示されています。

それはちゃんとキーを指定していないからですね。どの要素が追加されたのかをVueはキーで判断します。indexを指定してしまうと、最初キーは 0,1,...,4 であり、赤ボタンをクリックすると 0,1,...5 になりますので、indexが5のデータが追加されたんだと判断されます。

たまたま固有のデータであるNoが指定されているので、それをキーにすればうまくいきます。

他の円がスムーズにずれないのは、transition: all 1s;.radius-itemのところに移動させると直りました。

CodePen

投稿2017/12/10 15:25

karamarimo

総合スコア2555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/12/11 04:51

とてもわかり易い回答ありがとうございました!! 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問