Material UI Menu Button无法渲染选项问题求助
问题诊断与修复方案
核心问题
你的Menu组件open属性绑定了独立的open状态,但这个状态从未在点击按钮时更新。而你已经通过const menuOpen = Boolean(anchorEl)判断了菜单的开闭状态,却没在Menu组件中使用这个变量,导致菜单始终处于隐藏状态。
修复步骤
1. 修正Menu组件的open属性
将Menu组件的open={open}改为open={menuOpen},让菜单显示状态直接与anchorEl的存在状态绑定:
<Menu id='long-menu' MenuListProps={{ 'aria-labelledby': 'horz-button' }} anchorEl={anchorEl} open={menuOpen} // 此处修改为menuOpen onClose={handleMenuClose} PaperProps={{ style: { maxHeight: ITEM_HEIGHT * 4.5, width: '20ch', }, }} > {options.map((option) => ( <MenuItem key={option} selected={option === 'Pyxis'} onClick={handleMenuClose}> {option} </MenuItem> ))} </Menu>
2. (可选)清理冗余状态
如果不需要独立的open状态,可直接删除const [open, setOpen] = useState(false)这一行,减少不必要的状态变量。
额外检查点
- 确认所有Material UI组件(
Menu、MenuItem、IconButton、MoreHorizIcon等)均已正确从@mui/material或@mui/icons-material导入 - 检查
posts[i]的有效性,避免因索引超出数组范围导致的布局异常(此点与菜单功能无关,但会影响组件整体渲染)
内容的提问来源于stack exchange,提问作者SupraCoder
相关产品推荐
相关产品推荐

