You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止React MUI Menu组件点击时滚动条回到顶部?

解决点击省略号菜单时滚动条回到顶部的问题

出现这种滚动回顶的情况,通常是焦点管理异常或者点击事件触发了默认滚动行为导致的,你可以通过以下两种方式解决:

方案一:修正ARIA属性关联

你的Menu组件中设置了MenuListProps={{ 'aria-labelledby': 'long-button' }},但触发菜单的IconButton并没有对应的id="long-button",这种不匹配会导致屏幕阅读器的焦点逻辑出错,进而触发页面滚动。

修改IconButton,补上对应的id即可:

<IconButton
    id="long-button" // 新增此id,与Menu的aria-labelledby对应
    aria-label="more"
    aria-controls={open ? 'long-menu' : null}
    aria-expanded={open ? 'true' : null}
    aria-haspopup="true"
    onClick={handleClick}
  >
    <MoreVertIcon style={{ fontSize: '27px', color: 'black' }} />
  </IconButton>

方案二:在点击事件中阻止默认行为

如果方案一无效,可能是点击事件触发了浏览器的默认滚动行为,你可以在handleClick函数中阻止默认行为和事件冒泡:

const handleClick = (e) => {
  e.preventDefault(); // 阻止浏览器默认行为
  e.stopPropagation(); // 阻止事件冒泡
  setOpen(!open); // 原有的菜单切换逻辑
};

这两种方法都能有效禁用滚动回顶的行为,优先推荐方案一,因为它符合无障碍访问的规范,同时解决根源问题。

内容的提问来源于stack exchange,提问作者ferakp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:45:36