vue3 transition 中enter-from不生效的问题

发布于 2022-09-12 23:52:42 字数 2475 浏览 20 评论 0

template

image.png

css

image.png

在控制isShow进行动画效果时,离开过渡的动画能展示,而进入过渡的动画却不会生效

<template>
  <transition name="fade">
    <div class="modal d-block" tabindex="-1" v-if="isShow">
      <div class="modal-dialog">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title">{{ modalTitle }}</h5>
            <button
              type="button"
              class="btn-close"
              data-bs-dismiss="modal"
              aria-label="Close"
              @click.prevent="closeDialog"
            ></button>
          </div>
          <div class="modal-body">
            <slot name="body">
              <p>Modal body text goes here.</p>
            </slot>
          </div>
          <div class="modal-footer">
            <button
              type="button"
              class="btn btn-secondary"
              data-bs-dismiss="modal"
              @click.prevent="closeDialog"
            >
              Close
            </button>
            <button type="button" class="btn btn-primary">Save changes</button>
          </div>
        </div>
      </div>
    </div>
  </transition>
</template>
<script lang='ts'>
import { defineComponent, onMounted, ref, watch } from 'vue'
export default defineComponent({
  props: {
    modalTitle: {
      type: String,
      default: 'Modal title'
    }
  },
  setup () {
    const isShow = ref(false)
    const closeDialog = () => {
      isShow.value = false
    }
    // onMounted(() => {
    //   setTimeout(() => (isShow.value = true), 1000)
    // })
    return {
      closeDialog,
      isShow
    }
  }
})
</script>
<style lang='scss' scoped>
.fade-enter-active,
.fade-leave-active {
  transition: all 0.5s ease;
}

.fade-enter-from {
  opacity: 0;
}
.fade-leave-to {
  opacity: 0;
}
</style>

但是当我在onMounted生命周期函数中添加定时器,在一定时间间隔后去进行赋值,却可以实现进入过渡的效果,是transition和v-if之间存在先后顺序的问题吗?如果不通过定时器要如何实现呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文