问题:本项目为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: '请假管理',

},

],

}}}

>

查看原文