Optimize router

This commit is contained in:
2023-10-17 11:49:57 +08:00
parent 75962aafc9
commit 21450cc753

View File

@@ -2,6 +2,36 @@ import React from 'react'
import tools from '@/router/tools' import tools from '@/router/tools'
import home from '@/router/home' import home from '@/router/home'
const mapJsonToRoute = (jsonObject: RouteJsonObject[]): RouteObject[] => {
return jsonObject.map((value) => ({
path: value.path,
id: value.id,
element: value.element,
Component: value.component,
handle: {
name: value.name,
titlePrefix: value.titlePrefix,
title: value.title,
titlePostfix: value.titlePostfix,
icon: value.icon,
menu: value.menu,
auth: value.auth
},
children: value.children && mapJsonToRoute(value.children)
}))
}
const setTitle = (jsonObject: RouteJsonObject[], title: string): RouteJsonObject[] => {
return jsonObject.map((value) => {
if (!value.title) {
value.title = title
}
value.children && setTitle(value.children, title)
return value
})
}
const root: RouteJsonObject[] = [ const root: RouteJsonObject[] = [
{ {
path: '/', path: '/',
@@ -21,9 +51,8 @@ const root: RouteJsonObject[] = [
path: '/tools', path: '/tools',
id: 'toolsFramework', id: 'toolsFramework',
component: React.lazy(() => import('@/pages/ToolsFramework')), component: React.lazy(() => import('@/pages/ToolsFramework')),
children: tools, children: setTitle(tools, '氮工具'),
name: '工具', name: '工具',
title: '工具',
auth: false auth: false
}, },
{ {
@@ -40,33 +69,6 @@ const root: RouteJsonObject[] = [
} }
] ]
const mapJsonToRoute = (jsonObject: RouteJsonObject[]): RouteObject[] => {
return jsonObject.map((value) => ({
path: value.path,
id: value.id,
element: value.element,
Component: value.component,
handle: {
name: value.name,
titlePrefix: value.titlePrefix,
title: value.title,
titlePostfix: value.titlePostfix,
icon: value.icon,
menu: value.menu,
auth: value.auth
},
children:
value.children &&
mapJsonToRoute(value.children).map((sub) => {
const handle = sub.handle as RouteHandle
if (!handle.title) {
handle.title = value.title
}
return sub
})
}))
}
const routes = mapJsonToRoute(root) const routes = mapJsonToRoute(root)
const router = createBrowserRouter(routes) const router = createBrowserRouter(routes)