vue2.0过渡 javascript钩子函数无效

图片描述

图片描述

如上图,小球的下落效果,v-on:before-enter="beforeDrop"和v-on:enter="enterDrop"两个函数是生效了的,可是v-on:after-enter="afterDrop"这个钩子函数并不能执行,请问是怎么回事?

阅读 7.3k
4 个回答

图片描述
官网截图 你的enter回调函数里应该要有done()

官网链接

增加一个例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
       <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js"></script>
       
</head>

<body>

<div id="example-4">
  <button @click="show = !show">
    Toggle
  </button>
  <transition
    v-on:before-enter="beforeEnter"
    v-on:enter="enter"
    v-on:after-enter='afterEnter'
    v-bind:css="false"
  >
    <p v-if="show">
      Demo
    </p>
  </transition>
</div>
<script>
new Vue({
  el: '#example-4',
  data: {
    show: false
  },
  methods: {
    beforeEnter: function (el) {
        console.log('准备进入')

    },
    enter: function (el, done) {
        console.log('进入')
        done()
    },
    afterEnter(el){
        console.log('进入之后')
    }

  }
})
</script>
</body>
</html>

结果如下,点击按钮之后,三个毁掉函数依次触发
图片描述

这个问题确实存在,查了好久也没个所以然,我最后用延时定时器解决的,延时时间设置为过渡时间。但这也只是下策,希望有人详细解释下。

原来如此,也是同样的问题

新手上路,请多包涵

不是enter要用done()回调的嘛,不然不会执行after-enter的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题