2016-11-20 109 views
2

我有一些組件可以使用VueJs的動態組件選項進行轉換。我在動態組件上設置了轉換。我的問題如下: - 當前,如果更改當前視圖(或組件),轉換效果開始(離開轉換) - 轉換效果開始時,下一個視圖/組件開始自己的轉換。實質上,兩個轉換同時發生。我想要的是在新組件的(輸入)轉換開始之前完成第一個組件的(離開)轉換。VueJS:渲染新組件前完成動態組件轉換

<template> 
    <div id="app"> 
     <div>Current page: {{currentView}}</div> 
     <img src="./assets/logo.png"> 
     <transition name="fade"> 
      <component @stateCPchanged="changeView" v-bind:is="currentView"></component> 
     </transition> 
    </div> 
</template> 

<script> 
    import numberPage from './components/NumberPage.vue' 
    import otpPage from './components/OtpPage.vue' 
    import redirectPage from './components/RedirectPage.vue' 
    import state from './state.js' 
    export default { 
     data() { 
      return { 
       currentView: state.currentPage 
      } 
     }, 
     components: { 
      numberPage: numberPage, 
      otpPage: otpPage, 
      redirectPage: redirectPage 
     }, 
     methods: { 
      changeView() { 
       this.currentView = state.currentPage 
      } 
     } 
    } 
</script> 

<style> 
    .fade-enter-active { 
     transition: all 0.4s 
    } 
    .fade-enter { 
     opacity: 0; 
     margin-left: 90px; 
    } 
    .fade-leave-active { 
     transition: all 0.4s; 
     opacity: 0; 
     margin-left: -100px; 
    } 
</style> 

回答

4

mode="out-in"應該是你想要的。

+0

錯過了在文檔中。 TNX –

0

這可能不會完全解決它,但這可以減少轉換重疊的影響。

您可以使用cubic-bezier函數來獲得您的優勢,方法是控制持續時間內轉換快速的時間。

您可以在移出組件時使用ease-out CSS屬性,因此轉換將爲:快速/突然開始,結束緩慢。在移動的組件上使用ease-in,因此轉換將是:開始時較慢,結束時較快/突然,給予您整體效果。更多詳情here