Делаю
прототип шаговой карусели / бесконечного горизонтального скролла для колонок широкой таблицы. Рендерятся только видимые колонки.
По событию клика вправо/влево добавляется новая колонка за кадром и колонкам изменяется их свойство
left, а заранее назначенный
transition делает плавную прокрутку на 1 шаг.
Компоненты колонок рендерятся через
v-for из массива. По клику добавляю в начале/в хвосте 1 новый элемент в массив через обёрнутые методы
push() или
unshift(). После этого
Vue.nextTick() и в нём, когда, по идее, новый элемент уже отрендерен с позицией «до», всем элементам обновляю позицию на «после», что меняет их свойство
left и начинается transition.
Вот почему-то новые элементы появляются
сразу в конечной позиции и анимация к ним не применяется.
Как позволить отрендериться компонентам после добавления в массив, и вызвать функцию
после их отрисовки?
Upd. прототип довёл до
желаемого поведения. При повторных нажатиях достраиваются элементы слева/справа и «едут» все в общем контейнере с
transform: translate() Но теперь новая проблема, если зверски прыгать по стрелкам влево-вправо, и не давая анимации завершиться, запускать ее в противоположную сторону, "перевернув" её хотя бы 2 раза, по завершении в консоли вылетает ошибка самого Vue:
TypeError: "e is undefined"