我想在 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')
}
}
})
谢谢