CSS Animation with Vue.js



我正在学习Vue Js。

实际上我正在用SCSS和Vue Js制作一个聊天示例应用程序。

在我的项目中,我决定为消息框设置一些CSS动画。

下面是动画代码的片段:

SCSS:

.push {
...
animation-duration: 0.3s;
animation-timing-function: linear;
animation-fill-mode: forwards;

&.received {
...
animation-name: inFromLeft;
}
&.sent {
...
animation-name: inFromRight;
}
}
@keyframes inFromRight {
0% {
right: -100%;
}
100% {
right: 0;
}
}
@keyframes inFromLeft {
0% {
left: -100%;
}
100% {
left: 0;
}
}

HTML/VUE:

<div id="chat">
<div v-for="(message, index) in messages" :key="index" class="push" :class="type(message)">
...
</div>
</div>

所有消息都以数组格式存储在users对象中。(与vue数据).

问题是有些消息使用动画,而有些消息没有。

我认为这个问题与value和他加载数组的方法有关。

下面是最终结果的演示:

https://www.youtube.com/watch?v=EYsBk4HboD8

有人能帮我理解这个问题和如何解决吗?

(我更喜欢使用CSS动画,目前避免使用vue过渡)。

谢谢!

问题是在:key="index"中,将每个消息的密钥更改为唯一。应该修复这个问题

解释:Vue通过键来跟踪循环中的每个唯一元素,以避免删除和重新呈现元素,除非它们真的发生了变化,将消息键设置为它们的索引使Vue认为如果索引3中的元素被删除并且使用相同的键添加了一个新元素

在这里阅读更多内容https://v2.vuejs.org/v2/guide/list.html#Array-Change-Detection

最新更新