为什么Vue的Transition组件切换元素时动画没生效?
用Transition包裹动态组件切换时动画完全没反应,检查CSS也没问题,这是什么情况啊?
我的代码是这样的:
<template>
<div>
<button @click="toggle">切换</button>
<transition name="fade">
<component :is="currentView"></component>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
currentView: 'ViewA'
}
},
methods: {
toggle() {
this.currentView = this.currentView === 'ViewA' ? 'ViewB' : 'ViewA'
}
}
}
</script>
我定义了fade-enter-active这些CSS类,但切换时元素直接消失出现,完全没动画效果。试过把transition包裹的元素改成div+v-if结构反而可以,但为什么component动态切换就不行呢?
<component>加个唯一的key属性就能解决。修改后的代码:
加上key后Vue就能正确触发过渡效果了,我踩过这个坑,记得以前调试了好久。