提问人:Wadkan 提问时间:11/18/2023 最后编辑:Wadkan 更新时间:11/19/2023 访问量:32
vue3 transition 在布局组件中不起作用
vue3 transition do not work inside layout component
问:
我想在我的 Vue3 SPA 中使用一些过渡。 我使用 Vuetify 和 vue-router。
我在两个地方''''''。 如果将转换放入 App.ejvue 中,它可以正常工作,但仅限于整个应用程序加载时。 但是,如果我尝试将过渡组件放在我的布局结构中,那么我在 App.vue 中使用的完全相同的过渡将没有任何作用。 会有什么问题?
// App.vue
<template>
<router-view v-slot="{ Component }">
<transition name="slide">
<component :is="Component" />
</transition>
</router-view>
</template>
<style scoped>
.wrapper {
width: 100%;
min-height: 100vh;
}
.slide-enter-active,
.slide-leave-active {
transition: all 0.75s ease-out;
}
// further css
</style>
但是,如果我尝试在我的布局中使用它,它什么也做不了。 问题出在哪里?
// DefaultLayout.vue
<template>
<v-app>
<top-bar />
<default-view />
<bottom-bar />
</v-app>
</template>
<script setup>
// imports
</script>
// DefaultView.vue
<template>
<v-main class="mt-3 ml-2 mr-2">
<router-view v-slot="{ Component }">
<transition name="slide">
<component :is="Component" />
</transition>
</router-view>
</v-main>
</template>
<style scoped>
.wrapper {
width: 100%;
min-height: 100vh;
}
.slide-enter-active,
.slide-leave-active {
transition: all 0.75s ease-out;
}
// further css
</style>
// router/index.js
import { createRouter, createWebHistory } from 'vue-router'
const routes = [
{
path: '/',
component: () => import('@/layouts/default/DefaultLayout.vue'),
children: [
{
path: '',
name: 'home',
component: () => import(/* webpackChunkName: "home" */ '@/views/HomeView.vue'),
meta: { requiresAuth: false },
},
],
// ... other routes defined here
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes,
})
export default router
答:
0赞
Riz
11/19/2023
#1
您应该只应用一次过渡,要么在两者中,要么因为将过渡应用于两者中的元素并不理想。 过渡涵盖应用程序内的所有路由,包括在组件内部呈现的路由,但是当您再次应用过渡时,它不会产生任何影响,因为过渡已在根级别应用。App.vue
DefaultView.vue
router-view
App.vue
DefaultView.vue
DefaultView.vue
评论
0赞
Wadkan
11/20/2023
是的。我想应用一次,但它仅适用于 App.vue,但我在其他地方需要它。如果我将它留在 App.vue 中,它只会在我第一次在浏览器中打开我的应用程序时进行过渡,但当我使用客户端路由器从一个页面导航到另一个页面时,它什么也做不了。
评论