<抽屉 锚=“左” className="drawerArea 左导航" 变体=“永久” 打开={真} 纸质道具={{ 风格: { 宽度:“继承”, 背景:“#172B4D”, backgroundImage: `线性渐变(向右,#172B4D 60%,白色 40%)`, 边框:“无”, 溢出Y:“隐藏”, }, }} > <盒子> <盒子> <盒子>; <列表类名=“mp-0 wh-100溢出覆盖”> {菜单&& 菜单.长度> 0 && menus.map((项目,索引) => ( <框键={index}> <列表项 参考={popoverAnchor} className={`mp-0 navigationList flex-start-center`} ** onMouseEnter={(e) =>; { setNestedArr([...item?.children]); 弹出框输入(e); setAnchorEl(e?.currentTarget); }} onMouseLeave={(e) =>; { 弹出离开(e); }}** onClick={(e) =>; { console.log(项目,'parent_clicked') }} > <列表项文本> <盒子> {微图标[项目?.名称]? ( 微子[项目?.名称] ) : ( <图标>{item?.icon_class} )} </框> <版式> {项目名} </版式> </版式> } >> </列表项> </框> ))} 列表> </框> </框> </框> {打开&&嵌套Arr.长度? ( <嵌套菜单 打开={打开} setOpen={(val) =>;设置打开(val)} 锚El={锚El} 嵌套Arr = {嵌套Arr}lightBackground={lightBackground} secondaryColor={secondaryColor} popoverAnchor={popoverAnchor} popoverEnter={popoverEnter} popoverLeave={popoverLeave} /> ) : null} </Box> </Drawer></pre> <p><strong>页面左侧有一些菜单(使用MUI库和material-ui-nested-menu-item库),当鼠标悬停在Listitems上时,它会显示一个带有嵌套或子菜单的菜单,并在鼠标离开时关闭菜单,但我面临的问题是在悬停在菜单上时同时触发了onMouseLeave事件,所以菜单不会打开。我无法找出问题所在。</strong></p>
P粉3669463802023-08-14 00:16:12
在React中处理嵌套元素和鼠标事件时,您描述的问题是常见的。当您有嵌套元素并将onMouseEnter和onMouseLeave事件附加到父元素时,即使鼠标仍在父元素的范围内,移动鼠标到子元素上也会触发父元素的onMouseLeave事件。这是因为鼠标已经“离开”了父元素并“进入”了子元素。
为了解决这个问题,您可以使用onMouseOver和onMouseOut事件来替代onMouseEnter和onMouseLeave。onMouseOver和onMouseOut事件不会以相同的方式冒泡,因此它们可以帮助避免这个问题。