我是reactjs的新手。我的问题是,如果鼠标离开该区域,我希望菜单消失,所以我尝试了onMouseOut
和onMouseLeave
关闭菜单,但似乎当这个选项存在时,菜单永远不会打开!但当我删除onMouseOver
或离开时,它工作正常,但如果你不点击什么,它就停留在那里。MenuListProps={{ onMouseLeave:关闭句柄}}
这是因为当我打开菜单时,一个模态布局被放置在整个页面上,这意味着onMouseLeave
事件将在onMouseEnter
之后立即触发。
<div>
{menuItem.map((text) => (
<Button
onClick={(e) => handleChangeMenu(text, e)}
onMouseOver={(e) => handleHover(text, e)}>
{text}
</Button>
))}
<Menu
transitionDuration={700}
anchorEl={project}
open={Boolean(project)}
onClose={() => {
setproject(null);
}}
MenuListProps={{
onMouseLeave: () => {
setproject(null);
},
}}
>
{mySubMenu.map((text) => (
<MenuItem sx={menuItemStyle}>{text}</MenuItem>
))}
</Menu>
</div>
4条答案
按热度按时间v440hwme1#
存在指定物料组件ClickAwayListener
您可以像这样添加鼠标离开事件处理程序
8i9zcol22#
请添加react钩子调用useState并初始化为false。然后在下拉菜单中添加一个鼠标悬停时状态设置为true的按钮。(False和true可以显示下拉菜单)
neskvpey3#
对于这种情况,我使用onBlur,有同样的问题,添加onBlur事件到您的菜单组件
通常我有一个常量,它的值可以决定是否显示下拉菜单,下面是我在项目中的做法。
smtd7mpg4#
您可以将
div
添加为Button
和Menu
的容器,并向其中添加att.onMouseLeave
。