diff --git a/src/Menus.jsx b/src/Menus.jsx index 9d4284fd..8a19e5b5 100644 --- a/src/Menus.jsx +++ b/src/Menus.jsx @@ -73,7 +73,8 @@ class Menus extends React.Component { option.children && option.children.length > 0) { expandProps = { - onMouseEnter: onSelect, + onMouseEnter: this.delayOnSelect.bind(this, onSelect), + onMouseLeave: this.delayOnSelect.bind(this), }; menuItemCls += ` ${prefixCls}-menu-item-expand`; } @@ -109,6 +110,19 @@ class Menus extends React.Component { return result; } + delayOnSelect(onSelect) { + if (this.delayTimer) { + clearTimeout(this.delayTimer); + this.delayTimer = null; + } + if (onSelect) { + this.delayTimer = setTimeout(() => { + onSelect(); + this.delayTimer = null; + }, 300); + } + } + scrollActiveItemToView() { // scroll into view const optionsLength = this.getShowOptions().length;