VueJS:渲染新组件前完成动态组件转换
问题描述:
我有一些组件可以使用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>
答
这可能不会完全解决它,但这可以减少转换重叠的影响。
您可以使用cubic-bezier函数来获得您的优势,方法是控制持续时间内转换快速的时间。
您可以在移出组件时使用ease-out
CSS属性,因此转换将为:快速/突然开始,结束缓慢。在移动的组件上使用ease-in
,因此转换将是:开始时较慢,结束时较快/突然,给予您整体效果。更多详情here。
错过了在文档中。 TNX –