vue.js - VueJs Transition 不作为动态组件工作

标签 vue.js transition custom-component vuejs3

目标:

使用动态组件为Vue V3创建自定义可重用过渡组件。
vue2-transitions npm包使用与下面相同的方法,它不适用于 v3,所以我决定为自己做一个简单的。

自定义Transition.Vue

<component
  :is="group ? 'transition-group' : 'transition'"
  enter-active-class="fadeInDown"
  leave-active-class="fadeOutUp"
>
  <slot></slot>
</component>

SomeOtherComponent.vue

<div>
  <custom-transition>
    <span v-if="show">This does not work.</span>
  </custom-transition>
</div>

这不起作用,我不知道为什么。 <transition>元素的渲染方式如下。

<transition
  enter-active-class="fadeInDown"
  leave-active-class="fadeOutUp"
>
      <span>This does not work.</span>
</transition>

但是,

当我重写CustomComponent.vue时像这样。

<transition
  enter-active-class="fadeInDown"
  leave-active-class="fadeOutUp"
>
  <slot></slot>
</transition>

它工作得很好。

编辑

我添加了 JSFiddle ,以防有人想尝试一些东西。

最佳答案

终于从vue社区找到了解决方案。 link to working jsfiddle

要使该组件正常工作:

<component
  :is="group ? 'transition-group' : 'transition'"
  enter-active-class="fadeInDown"
  leave-active-class="fadeOutUp"
>
  <slot></slot>
</component>

在组件中显式导入 TransitionTransitionGroup 组件并注册它们。

import { Transition, TransitionGroup } from 'vue'

export default {
  components: {
    Transition,
    TransitionGroup,
  },
  data() {
    return { show: false };
  }
}

链接到github issuevue-next 存储库中。

关于vue.js - VueJs Transition 不作为动态组件工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64062548/

相关文章:

javascript - Vue.js 图像 src 绑定(bind)/switch 语句

android - 共享元素转换和 ContentTransition 延迟计时

reactjs - 将使用 react-router v5 完成的 BreadCrumb 组件更改为 react router v6

javascript - vue.js v-link 不起作用

vue.js - vue.js如何获取点击按钮的值

javascript - d3.js 跳过文本转换(3 个转换中的第 2 个)

javascript - 在单个通用更新模式中转换圆圈和文本(在 g 元素内)

delphi - 是否存在具有不错功能的 VCL OrgChart 组件?有可行的替代方案吗?

java - 选项卡 Pane 中的自定义组件不可交互

vue.js - 如何避免 props 和 data 中的数据重复?