Commit 85d556d3 authored by ι™ˆεΈ…'s avatar ι™ˆεΈ…

move menuData to state

parent 1cdf5662
......@@ -80,7 +80,7 @@ export default class BaseMenu extends PureComponent {
getSubMenuOrItem = item => {
// doc: add hideChildrenInMenu
if (item.children && !item.hideChildrenInMenu && item.children.some(child => child.name)) {
const name = formatMessage({ id: item.locale });
const name = item.locale ? formatMessage({ id: item.locale }) : item.name;
return (
<SubMenu
title={
......@@ -108,7 +108,7 @@ export default class BaseMenu extends PureComponent {
* @memberof SiderMenu
*/
getMenuItemPath = item => {
const name = formatMessage({ id: item.locale });
const name = item.locale ? formatMessage({ id: item.locale }) : item.name;
const itemPath = this.conversionPath(item.path);
const icon = getIcon(item.icon);
const { target } = item;
......
......@@ -22,7 +22,8 @@ const { Content } = Layout;
// Conversion router to menu.
function formatter(data, parentPath = '', parentAuthority, parentName) {
return data.map(item => {
return data
.map(item => {
let locale = 'menu';
if (parentName && item.name) {
locale = `${parentName}.${item.name}`;
......@@ -31,19 +32,29 @@ function formatter(data, parentPath = '', parentAuthority, parentName) {
} else if (parentName) {
locale = parentName;
}
if (item.path) {
const result = {
...item,
locale,
authority: item.authority || parentAuthority,
};
if (item.routes) {
const children = formatter(item.routes, `${parentPath}${item.path}/`, item.authority, locale);
const children = formatter(
item.routes,
`${parentPath}${item.path}/`,
item.authority,
locale
);
// Reduce memory usage
result.children = children;
}
delete result.routes;
return result;
});
}
return null;
})
.filter(item => item);
}
const memoizeOneFormatter = memoizeOne(formatter, isEqual);
......@@ -85,6 +96,7 @@ class BasicLayout extends React.PureComponent {
state = {
rendering: true,
isMobile: false,
menuData: this.getMenuData(),
};
componentDidMount() {
......@@ -224,9 +236,8 @@ class BasicLayout extends React.PureComponent {
children,
location: { pathname },
} = this.props;
const { isMobile } = this.state;
const { isMobile, menuData } = this.state;
const isTop = PropsLayout === 'topmenu';
const menuData = this.getMenuData();
const routerConfig = this.matchParamsPath(pathname);
const layout = (
<Layout>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment