Nuxt3 - 嵌套页面结构无法正常工作

问题描述 投票:0回答:0

我想在 NUXT 3 中有嵌套路由,所以我创建了这个文件/文件夹结构(只显示了我挣扎的部分):

 - Pages
   - Admin
     - Index.vue
     - Users
       - Index.vue
       - OtherRoute.vue

当我通过

<NuxtLink>
导航时,此文件夹结构运行良好 - 我可以访问如下页面:

- domain.com/admin (Pages/Admin/index.vue)
- domain.com/admin/users (Pages/Admin/Users/index.vue)
- domain.com/admin/users/otherRoute (Pages/Admin/Users/otherRoute.vue)

问题是当我重新加载页面或直接访问 url domain.com/admin/users NUXT 将其更改为

domain.com/admin/admin-users

由于某些原因,NUXT 在直接访问它时无法解析此 url,而不是通过 NuxtLink 并抛出 404 错误。有没有办法拥有这样的页面结构并解决意外的路径更改?

编辑1 发生了什么视频

编辑2

Users.vue 页面

<template>
    <TitleH1>Users</TitleH1>
    <TileList :tiles='tiles'></TileList>
</template>

<script setup>
    definePageMeta({
        layout: "logged",
    });

    const tiles = [
        {title: 'Users', icon: 'ic:baseline-supervisor-account', to: '/admin/users'},
        {title: 'Roles', icon: 'material-symbols:lock-person', to: '/admin/roles'},
        {title: 'Units', icon: 'ph:tree-structure', to: '/admin/units'},
    ]
</script>

logged.vue(布局)

<template>
    <NavigationMain :key="$route.name" />
    <div class="flex">
        <NavigationSide />
        <div class="w-full">
            <div class="px-4 md:mx-auto xl:px-36">
                <Breadcrumb />
                <slot></slot>
            </div>
            <NotificationHub />
        </div>
    </div>
</template>

auth.global.js(唯一在该页面上运行的中间件)

export default defineNuxtRouteMiddleware(async (to, from) => {
    const { isLogged, proceedAutoLogin } = useAuthStore();
        if (!isLogged){
            if (to.name !== 'login'){
                if (await proceedAutoLogin()){
                    return navigateTo(to.name)
                }else{
                    abortNavigation()
                    return navigateTo('/login')
                } 
            }
        }else{
            if (!await proceedAutoLogin()){
                abortNavigation()
                return navigateTo('/login')
            }
        }
  })

谢谢

vue.js nuxt.js nuxt3
© www.soinside.com 2019 - 2024. All rights reserved.