Vue过渡:JavaScript钩子

 

一 App.vue

 

 

<template>
  <div id="app">
    <button @click="show = !show">按钮</button>
    <transition 
      name="fade"
      @before-enter="beforeEnter"
      @enter="enter"
      @after-enter="afterEnter"
      @enter-cancelled ="enterCanelled"
      @before-leave="beforeLeave"
      @leave="leave"
      @after-leave="afterLeave"
      @leave-cancelled="leaveCancelled">
      <h3 class="title" v-show="show">芒果</h3>
    </transition>
  </div>
</template>

<script>
import Vue from "vue";
export default {
  name: "app",
  data() {
    return {
      show: false
    };
  },
  methods: {
    beforeEnter() {
      console.log("beforeEnter");
    },
    enter() {
      console.log("enter");
    },
    afterEnter() {
      console.log("afterEnter");
    },
    enterCanelled() {
      console.log("enterCanelled");
    },
    beforeLeave() {
      console.log("beforeLeave");
    },
    leave() {
      console.log("leave");
    },
    afterLeave() {
      console.log("afterLeave");
    },
    leaveCancelled() {
      console.log("leaveCancelled");
    }
  }
};
</script>

<style scoped>
.title {
  width: 100px;
  line-height: 26px;
  font-size: 16px;
  color: blue;
}
.fade-enter,
.fade-leave-to {
  opacity: 0;
}
.fade-enter-active,
.fade-leave-active {
  transition: opacity .6s ease-in-out;
}
</style>

 

二 运行效果

 

 

 

三 备注

 

1 当只用 JavaScript 过渡的时候,在 enter 和 leave 中必须使用 done 进行回调。否则,它们将被同步调用,过渡会立即完成。

2 推荐对于仅使用 JavaScript 过渡的元素添加 v-bind:css="false",Vue 会跳过 CSS 的检测。这也可以避免过渡过程中 CSS 的影响。

3 leave-cancelled钩子,不能在v-if指令中使用,只能在v-show指令中使用。因为v-if指令一定会销毁组件,组件必定离开,是不可取消的。

  其它钩子在v-show指令、v-if指令中都能使用。

 

posted on 2019-08-06 11:32  沙滩海风  阅读(350)  评论(0编辑  收藏  举报

导航