路由跳转动画的添加

117 阅读1分钟

在很多项目中路由的切换都会有过渡动画,在vue的官网中有路由添加过渡动画的写法。

<template>
    <!-- 路由组件出口的位置 -->
    <router-view v-slot="{ Component }">
        <transition name="fade">
            <!-- 渲染layout一级路由组件的子路由 -->
            <component :is="Component" v-if="flag" />
        </transition>
    </router-view>
</template>

<script setup lang="ts">
import { watch, ref, nextTick } from 'vue';
import useLayOutSettingStore from '@/store/modules/setting';
let layOutSettingStore = useLayOutSettingStore();

//控制当前组件是否销毁重建
let flag = ref(true);

//监听仓库内部数据是否发生变化,如果发生变化,说明用户点击过刷新按钮
watch(() => layOutSettingStore.refsh, () => {
    //点击刷新按钮:路由组件销毁
    flag.value = false;
    nextTick(() => {
        flag.value = true;
    })
})
</script>
<script lang="ts">
export default {
    name: "Main"
}
</script>

<style scoped>
.fade-enter-from {
    opacity: 0;
    transform: scale(0);
}

.fade-enter-active {
    transition: all .3s;
}

.fade-enter-to {
    opacity: 1;
    transform: scale(1);
}
</style>

通过 transition 来给 router-view 整个内容添加过渡动画,只需要在css在上fade-enter-from,fade-enter-active,fade-enter-to 加上动画效果即可