我发现两个div元素之间的转换不起作用,如下所示:

<transition name="fade">
  <div v-if="show">111</div>
  <div v-else>222</div>
</transition>

但如果只有一个div元素,它就可以工作,比如:

<transition name="fade">
  <div v-if="show">111</div>
  <p v-else>222</p>
</transition>

这是vue 2漏洞吗?或者我不能用两个div元素?

如何使用两个div元素..?

推荐答案

你应该为divs添加unique key属性,这样它才能工作:https://jsfiddle.net/a8fv6rvp/1/

<script src="https://unpkg.com/vue/dist/vue.js"></script>

<div id="app">
  <transition name="fade" mode="out-in">
    <div v-if="show" key="1">111</div>
    <div v-else key="2">222</div>
  </transition>
  <button @click="show = !show">Toggle</button>
</div>

new Vue({
    el: '#app',
  data: {
    show: true
  }
});

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity .5s
}
.fade-enter, .fade-leave-to {
  opacity: 0
}
</style>

Vue.js相关问答推荐

Vue CDN的html工作,但v—如果不工作

虚拟DOM在Vue中姗姗来迟

Vue.js编译的render函数不起作用

如何在 Vuetify 2 中的轮播项目上放置 href 属性?

为什么 Vue 在将设置脚本中的计算(computed)属性渲染到模板时找不到变量

为什么我在 Vue npm run serve 的 localhost 中得到无法获取

Webpack 编译错误:TypeError: __WEBPACK_IMPORTED_MODULE_1__ … is not a function

如何在 vue.js 中包含当年的版权?

VueJS 使用 prop 作为数据属性值

Modal 内部的 Vue.js AJAX 调用

Vue.js:TypeError:无法设置只有 getter 的 # 的属性props

如何在生产模式下为 chrome 扩展启用 Vue devtools?

这是 v-on:change 的正确用法吗?

如何突出显示 Vuetify 菜单中的选定项目?

在Vue中单击路由链接上的激活方法

我应该将所有数据存储在 vuex 状态

如何让 Vue 在 shadow dom 中工作

Vue组件如何命名

VueJS 按键查找元素

超过最大调用堆栈大小 Vuetify