登录  /  注册
Vue 转换不适用于 router-link 和 $router.push
P粉253518620
P粉253518620 2023-12-26 15:05:01
[Vue.js讨论组]

我有以下 App.vue 文件:

<script setup>
import { RouterView } from "vue-router";
</script>

<template>
  <RouterView v-slot="{ Component }">
    <transition :name="fade" mode="out-in">
      <component :is="Component" />
    </transition>
  </RouterView>
</template>

以及以下路由器文件:

import { createRouter, createWebHistory } from "vue-router";

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: "/",
      name: "signin",
      component: () => import("../views/signin.vue"),
    },
    {
      path: "/dashboard",
      name: "dashboard",
      component: () => import("../views/dashboard.vue"),
    },
  ],
});

export default router;

当我运行应用程序并单击任何链接时,无论使用 $router.push("/dashboard"); 或 router-link(to ="/dashboard" active-class="active")。我已经检查了许多其他问题和教程,但不幸的是它仍然不起作用。知道为什么没有发生转换吗?

P粉253518620
P粉253518620

全部回复(2)
P粉659518294

您可以在代码中更改一些内容。

首先,您不需要声明 RouterView 的导入,因为它是 全球注册。只要您的项目中安装了 vue-router,您就可以直接在模板上安全地使用 RouterViewrouter-view

其次,您需要将 name 属性更改为静态属性。编写 :name="fade" 意味着您将变量 fade 的值传递给 name。根据您的代码,我假设 fade 不是变量而是字符串,这意味着您需要将 prop 更改为 name="fade"。详细了解静态和动态道具。 p>

最后,过渡需要使用 CSS。由于您要声明命名转换,因此您需要添加以下 CSS:

.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s ease;
}

.fade-enter-from,
.fade-leave-to {
  opacity: 0;
}

注意 CSS 中 fade 的使用。这是 name 属性中提供的值,这意味着如果您有:

<transition name="slide-in" mode="out-in">

那么你的 CSS 应该有 .slide-in-enter-active.slide-in-enter-leave 等。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号