同一组件之间的过渡?

Transition between the same component?

// Template
<transition name="fade">
    <my-component :my-prop="data[currentIndex]" />
</transition>

// CSS
.fade-enter-active, .fade-leave-active {
    transition: opacity .5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
    opacity: 0;
}

我还有一个按钮可以更改当前索引和更新组件的数据。 这不起作用,我认为这是因为更改数据不会使其成为触发转换所需的新组件。

我在网上看到的所有例子都是为了在不同的组件之间切换,这个工作,但我不能应用它,因为它都是针对同一个组件的。

我发现的另一个解决方案是在 v-for 中创建一堆组件,然后在当前组件上进行 v-show,但是我需要绝对定位以防止过渡跳跃,这似乎不是喜欢这样做的方式。

我想我可以在更新函数的脚本标签中进行转换或其他操作,但是当转换应该为我处理这个问题时,这似乎是错误的方式。我是不是漏了什么。

昨天遇到了同样的问题! ^^" 当我向我的组件添加一个 :key="" 属性时它工作正常(即使子组件中没有名为 key 的道具)。 试试这个:

<transition name="slide">
    <my-component :key="currentIndex" :my-prop="data[currentIndex]" />
</transition>

我还不知道为什么,但我想如果道具是一个对象,它不会检测到变化?或者你可能必须传递一个键属性(但我看到一些例子没有使用键属性......) 告诉我它是否有效 ;)

编辑:我看到您更改了过渡的名称,但样式不包含此名称。使用默认名称和样式尝试上面的解决方案 ("fade") https://vuejs.org/v2/guide/transitions.html