Vue поочередная анимация списков

Делаю поочередное появление элементов на Vue, что бы при добавлении любого количество, элементы появлялись и пропадали по порядку. Появление сделал, но при частом нажатии вторая партия элементов не дожидается первой и кажется что элементы добавляют не поочередно. А исчезновение вообще работает как попало. Что сделать чтоб это работало?)

Vue.createApp({
  data() {
    return {
      count: 5,
      delayIndex: 0,
    };
  },
  methods: {
    addCount: function () {
      this.count += 5;
      this.delayIndex = 0;
    },
    removeCount: function () {
      this.count -= 5;
      this.delayIndex = 0;
    },
    beforeEnter: function (el) {
      el.style.opacity = 0;
    },
    enter: function (el) {
      var delay = this.delayIndex * 150;
      this.delayIndex++;
      setTimeout(function () {
        el.style.opacity = 1;
      }, delay);
    },
    leave: function (el) {
      var delay = this.delayIndex * 150;
      this.delayIndex++;
      setTimeout(function () {
        el.style.opacity = 0;
      }, delay);
    },
  },
}).mount('#app')
ul {
  list-style-type: none;
  padding: 0;
  text-align: left;
}
li {
  display: inline-block;
  margin: 0 10px;
}

.coins-enter-active,
.coins-leave-active {
  transition: opacity 0.5s ease;
}
<script src="https://unpkg.com/[email protected]/dist/vue.global.js"></script>
<div id="app">
  <button @click="addCount">Добавить</button>
  <button @click="removeCount">Убавить</button>
  <transition-group
    name="coins"
    tag="ul"
    v-on:before-enter="beforeEnter"
    v-on:enter="enter"
    v-on:leave="leave"
  >
    <li
      v-for="(item, index) in count"
      v-bind:key="item"
      v-bind:data-index="index"
    >
      {{ item }}
    </li>
  </transition-group>
</div>


Ответы (0 шт):