@dominy

Почему transition-group не работает в cli но работает в cdn?

Здравствуйте, из документации я взял пример transition-group с v-for в cdn, отлично анимируется и на создание и на удаление елемента
<!DOCTYPE html>
<header>
	<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</header>

<body>
	<div id="list-demo">
		<button v-on:click="add">Add</button>
		<button v-on:click="remove">Remove</button>
		<transition-group name="list" tag="p">
			<span v-for="item in items" v-bind:key="item" class="list-item">
				{{ item }}
			</span>
		</transition-group>
	</div>
	<style>
		.list-item {
			display: inline-block;
			margin-right: 10px;
		}

		.list-enter-active,
		.list-leave-active {
			transition: all 1s;
		}

		.list-enter,
		.list-leave-to {
			opacity: 0;
			transform: translateY(30px);
		}
	</style>
</body>
<script>
	new Vue({
		el: '#list-demo',
		data: {
			items: [1, 2, 3, 4, 5, 6, 7, 8, 9],
			nextNum: 10
		},
		methods: {
			randomIndex: function () {
				return Math.floor(Math.random() * this.items.length)
			},
			add: function () {
				this.items.splice(this.randomIndex(), 0, this.nextNum++)
			},
			remove: function () {
				this.items.splice(this.randomIndex(), 1)
			},
		}
	})
</script>

Но когда я переписал код по компонент, удаление все-еще анимируется но создание нет. Почему так приисходит
<template>
  <div id="list-demo">
    <button v-on:click="add">Add</button>
    <button v-on:click="remove">Remove</button>
    <transition-group name="list" tag="p">
      <span v-for="item in items" v-bind:key="item" class="list-item">
        {{ item }}
      </span>
    </transition-group>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  data() {
    return {
      items: [1, 2, 3, 4, 5, 6, 7, 8, 9],
      nextNum: 10,
    };
  },
  methods: {
    randomIndex: function () {
      return Math.floor(Math.random() * this.items.length);
    },
    add: function () {
      this.items.splice(this.randomIndex(), 0, this.nextNum++);
    },
    remove: function () {
      this.items.splice(this.randomIndex(), 1);
    },
  },
};
</script>

<style lang="scss">
.list-item {
  display: inline-block;
  margin-right: 10px;
}

.list-enter-active,
.list-leave-active {
  transition: all 1s;
}

.list-enter,
.list-leave-to {
  opacity: 0;
  transform: translateY(30px);
}
</style>
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы