Commit 85d556d3 authored by 陈帅's avatar 陈帅

move menuData to state

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