问题:本项目为umi配合 prolayout,设置路由自动生成菜单。出现问题为,有些二级三级路由,需要在导航路由显示,但在菜单栏不显示
一、配置proLayout生成菜单:
ProLayout 与 umi 配合使用会有最好的效果,umi 会把 config.ts 中的路由帮我们自动注入到配置的 layout 中,这样可以免去手写菜单的烦恼。
1. ant-design-pro布局
① 安装@ant-design/pro-layout
② 配置 layout:{}
see (快速上手-修改配置)--> https://v3.umijs.org/zh-CN/docs/getting-started
③ Pro 中默认会读取 config/config.tsx 中的 routes 配置作为 ProLayout 的菜单数据来生成菜单。routes 里配置name属性的,会被生成菜单,无name属性的既普通路由
2. umi 路由配置
Umi 在 .umirc.ts 或 config/config.ts 中配置项目和插件,支持 es6
菜单的高级用法:Pro 中默认会读取 config/config.tsx 中的 routes 配置作为 ProLayout 的菜单数据来生成菜单,并且配合 plugin-access 还可以很方便的进行菜单的权限管理。
1. 路由
① 直接写在.umirc.ts或config/config.ts
② 路由配置可以拆分成单独的 routes.ts:
/ config/routes.ts
export default [
{ exact: true, path: '/', component: 'index' },
];
// config/config.ts
import { defineConfig } from 'umi';
import routes from './routes';
export default defineConfig({
routes: routes,
});
二、 项目问题:
umi配合使用proLayout,通过路由生成菜单,原型图为,某些二级、三级路由在页面的标题显示,但是在菜单上不能显示。 如图,二级路由的 考生信息管理 在标题上有,在菜单上没有。
实际效果 :标题显示不对,当菜单上不显示,也就是路由未设置name 时,标题也不显示
原型:
三、解决方案:
一、通过prolayout属性设置,在菜单中隐藏路由的二级显示
查看proLayout 的API,发现可以通过api,设置是否显示二级路由,也就是二级路由,写name, 但是通过属性不显示在菜单栏,而路由显示。
ProLayout 扩展了 umi 的 router 配置,新增了 name,icon,locale,hideInMenu,hideChildrenInMenu 等配置,这样可以更方便的生成菜单,在一个地方配置即可
路由代码:
{
path: '/gradeManagement',
name: '成绩管理',
icon: 'setting',
access: 'isGradeManagement',
hideChildrenInMenu:true,
routes: [
{
path: '/gradeManagement',
redirect: './gradeMan',
},
{
path: '/gradeManagement/gradeMan',
icon: 'setting',
component: './gradeManagement/gradeMan',
name: '成绩管理',
},
{
path: '/gradeManagement/gradeDetail',
icon: 'setting',
component: './gradeManagement/gradeDetail',
name: '详情查看',
},
]
}
二、面包屑简易设置:proLayout 可以直接设置面包屑
header={{ title: '请假管理', ghost: true, breadcrumb: { routes: [ { path: '', breadcrumbName: '考前报道管理', }, { path: '', breadcrumbName: '请假管理', }, ], }}} >
发表评论