diff --git a/src/components/SiderMenu/BaseMenu.js b/src/components/SiderMenu/BaseMenu.js index 9ab66ec3c03111edb1920d7d61e14dfef92838a2..87eafb02ef017ec9c9e98fd7179e225ee0bef1af 100644 --- a/src/components/SiderMenu/BaseMenu.js +++ b/src/components/SiderMenu/BaseMenu.js @@ -123,6 +123,17 @@ export default class BaseMenu extends PureComponent { return `/${path || ''}`.replace(/\/+/g, '/'); }; + getPopupContainer = (fixedHeader, layout) => { + if (fixedHeader && layout === 'topmenu') { + return this.wrap; + } + return document.body; + }; + + getRef = ref => { + this.wrap = ref; + }; + render() { const { openKeys, @@ -131,6 +142,8 @@ export default class BaseMenu extends PureComponent { location: { pathname }, className, collapsed, + fixedHeader, + layout, } = this.props; // if pathname can't match, use the nearest parent's key let selectedKeys = this.getSelectedMenuKeys(pathname); @@ -149,18 +162,22 @@ export default class BaseMenu extends PureComponent { }); return ( - - {this.getNavMenuItems(menuData)} - + <> + this.getPopupContainer(fixedHeader, layout)} + > + {this.getNavMenuItems(menuData)} + +
+ ); } }