菜单布局开发
菜单布局是页面显示上边工具栏和左边菜单栏的展示, 最终使用了 customize 解决方案,方便于二次开发。
如果只是需要在工具栏新增自己的按钮等自己的组件,可以再
src/router.js
里布局组件增加extraHeaderRight={[component1,component2]}
,如果布局是侧边展开布局,需要传参headerProps={{toolbarProps: {extraHeaderRight: component1 }}}
说明
1 在主模块 新建/修改 以下文件
/src/customize
├── customizeLayout.js
2 增加布局文件
/src/layouts
├── DefaultLayout // 自己的布局文件代码
举例
1 菜单布局 customize
// 不需要自己写,可以引用平台的
import { isFunction } from 'lodash';
import { mapCustomize } from 'utils/customize';
const defaultLayout = () => import('../layouts/DefaultLayout');
export function loadLayout(layoutName) {
if (mapCustomize.has({ module: 'hzero-front', feature: 'layout', key: layoutName })) {
const layout = mapCustomize.get({ module: 'hzero-front', feature: 'layout', key: layoutName });
return isFunction(layout && layout.component) ? layout.component : defaultLayout;
}
return defaultLayout;
}
export function setLayout(layoutName, layout) {
mapCustomize.set({
module: 'hzero-front',
feature: 'layout',
key: layoutName,
data: { component: layout },
});
}
2 使用 数据权限维度的 customize
/import { setLayout } from 'hzero-front/lib/customize/layout';
// 注入 hzero-front 时 注入 自定义的 layouts
// 侧边平铺布局
setLayout('inline', async () => import('../layouts/DefaultLayout'));
// 上方菜单布局
setLayout('horizontal', async () => import('hzero-front/lib/layouts/TopLayout'));
// 侧边级联布局
setLayout('side', async () => import('hzero-front/lib/layouts/SideLayout'));
// 侧边展开布局
setLayout('side-all', async () => import('hzero-front/lib/layouts/CommonLayout'));
// 注入 hzero-front 时 注入 自定义的 layouts