Почему анимация перемещения VueJS работает только в одном направлении?

Я совершенно озадачен этим. По какой-то причине Vue3 правильно применит класс анимации перемещения для <transition-group/>содержащий список элементов, но только если список продвинут вперед. Я собрал для этого CodePen, и даже с очень простым вариантом использования (перечисление чисел) классы перехода просто не применяются, если вы продвигаетесь в любом направлении, кроме обратного.

https://codepen.io/monitorjbl/pen/vYZPzXO

Если вы нажмете кнопку «-», классы анимации будут применены, и вы увидите, как срабатывают анимации движения. Однако при нажатии кнопки «+» классы анимации перемещения не применяются и анимация не применяется вообще.

1 ответ

Как я уже упоминал в ваших комментариях, вам не хватает классов перехода для входа и выхода. Поскольку вы изменяете только 3 элемента массива в любое время, это означает, что 2 элемента останутся в списке и будут соответствовать вашему классу «перемещения», но 3 элемента будут созданы / уничтожены, и вы не обрабатываете эти случаи.

Если вы обратитесь к примеру, приведенному в документации Vue , вы увидите, что классы перехода входа / выхода необходимы, чтобы собрать все воедино. Например, вы можете добавить это в свой CSS:

      .flip-list-enter-from,
.flip-list-leave-to {
  opacity: 0;
}

.flip-list-leave-active {
  position: absolute;
}

Вот пример проверки концепции:

Другие вопросы по тегам