|
|
@@ -16,8 +16,6 @@ import logo from '../assets/logo.svg';
|
|
|
import Footer from './Footer';
|
|
|
import Header from './Header';
|
|
|
import Context from './MenuContext';
|
|
|
-// TODO: should use this.props.routes
|
|
|
-import routerConfig from '../../config/router.config';
|
|
|
|
|
|
const { Content } = Layout;
|
|
|
const { check } = Authorized;
|
|
|
@@ -48,28 +46,6 @@ function formatter(data, parentPath = '', parentAuthority, parentName) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-// get menu map data
|
|
|
-const menuData = formatter(routerConfig[1].routes);
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取面包屑映射
|
|
|
- * @param {Object} menuData 菜单配置
|
|
|
- */
|
|
|
-const getBreadcrumbNameMap = memoizeOne(menu => {
|
|
|
- const routerMap = {};
|
|
|
- const mergeMenuAndRouter = data => {
|
|
|
- data.forEach(menuItem => {
|
|
|
- if (menuItem.children) {
|
|
|
- mergeMenuAndRouter(menuItem.children);
|
|
|
- }
|
|
|
- // Reduce memory usage
|
|
|
- routerMap[menuItem.path] = menuItem;
|
|
|
- });
|
|
|
- };
|
|
|
- mergeMenuAndRouter(menu);
|
|
|
- return routerMap;
|
|
|
-}, isEqual);
|
|
|
-
|
|
|
const query = {
|
|
|
'screen-xs': {
|
|
|
maxWidth: 575,
|
|
|
@@ -99,8 +75,8 @@ class BasicLayout extends React.PureComponent {
|
|
|
constructor(props) {
|
|
|
super(props);
|
|
|
this.getPageTitle = memoizeOne(this.getPageTitle);
|
|
|
- // Because there are many places to be. So put it here
|
|
|
- this.breadcrumbNameMap = getBreadcrumbNameMap(menuData);
|
|
|
+ this.getBreadcrumbNameMap = memoizeOne(this.getBreadcrumbNameMap, isEqual);
|
|
|
+ this.breadcrumbNameMap = this.getBreadcrumbNameMap();
|
|
|
}
|
|
|
|
|
|
state = {
|
|
|
@@ -132,7 +108,7 @@ class BasicLayout extends React.PureComponent {
|
|
|
}
|
|
|
|
|
|
componentDidUpdate() {
|
|
|
- this.breadcrumbNameMap = getBreadcrumbNameMap(menuData);
|
|
|
+ this.breadcrumbNameMap = this.getBreadcrumbNameMap();
|
|
|
}
|
|
|
|
|
|
componentWillUnmount() {
|
|
|
@@ -148,6 +124,32 @@ class BasicLayout extends React.PureComponent {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+ getMenuData() {
|
|
|
+ const {
|
|
|
+ route: { routes },
|
|
|
+ } = this.props;
|
|
|
+ return formatter(routes);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取面包屑映射
|
|
|
+ * @param {Object} menuData 菜单配置
|
|
|
+ */
|
|
|
+ getBreadcrumbNameMap() {
|
|
|
+ const routerMap = {};
|
|
|
+ const mergeMenuAndRouter = data => {
|
|
|
+ data.forEach(menuItem => {
|
|
|
+ if (menuItem.children) {
|
|
|
+ mergeMenuAndRouter(menuItem.children);
|
|
|
+ }
|
|
|
+ // Reduce memory usage
|
|
|
+ routerMap[menuItem.path] = menuItem;
|
|
|
+ });
|
|
|
+ };
|
|
|
+ mergeMenuAndRouter(this.getMenuData());
|
|
|
+ return routerMap;
|
|
|
+ }
|
|
|
+
|
|
|
getPageTitle = pathname => {
|
|
|
let currRouterData = null;
|
|
|
// match params path
|
|
|
@@ -230,7 +232,7 @@ class BasicLayout extends React.PureComponent {
|
|
|
Authorized={Authorized}
|
|
|
theme={silderTheme}
|
|
|
onCollapse={this.handleMenuCollapse}
|
|
|
- menuData={menuData}
|
|
|
+ menuData={this.getMenuData()}
|
|
|
{...this.props}
|
|
|
/>
|
|
|
)}
|