diff --git a/src/Menu.tsx b/src/Menu.tsx index fcee4bdf..d7e47824 100644 --- a/src/Menu.tsx +++ b/src/Menu.tsx @@ -183,7 +183,7 @@ class Menu extends React.Component { ) { onOpenChange([]); } - this.updateMiniStore(); + this.updateMiniStore(prevProps); this.updateMenuDisplay(); } @@ -383,16 +383,20 @@ class Menu extends React.Component { this.innerMenu = node; }; - updateMiniStore() { + updateMiniStore(prevProps?: MenuProps) { if ('selectedKeys' in this.props) { - this.store.setState({ - selectedKeys: this.props.selectedKeys || [], - }); + if (!prevProps || this.props.selectedKeys !== prevProps.selectedKeys) { + this.store.setState({ + selectedKeys: this.props.selectedKeys || [], + }); + } } - if ('openKeys' in this.props) { - this.store.setState({ - openKeys: this.props.openKeys || [], - }); + if ('openKeys' in this.props && this.props.openKeys.length) { + if (!prevProps || this.props.openKeys !== prevProps.openKeys) { + this.store.setState({ + openKeys: this.props.openKeys || [], + }); + } } }