在 mui(material ui)中,若将 tooltip 直接包裹 menuitem,会导致点击失效、选中状态无法更新;正确做法是将 tooltip 置于 menuitem 内部,并用 `
`(或其它可交互/渲染的 html 元素)包裹文本内容。在使用 MUI 的 Select 组件时,为 MenuItem 添加 Tooltip 是一种常见需求——例如用于展示额外说明、字段含义或国际化提示。但若错误地将 Tooltip 作为 MenuItem 的父元素(如
根本原因在于:MUI 的 MenuItem 内部依赖原生

✅ 正确写法是将 Tooltip 嵌套在 MenuItem 内部,并确保其子元素为一个普通 HTML 元素(如
、 或),以保证事件穿透和无障碍支持:
⚠️ 注意事项:
? 小技巧:可封装为可复用组件提升可维护性:
const TooltipMenuItem = ({ value, label, tooltip }: {
value: any;
label: string;
tooltip: string;
}) => (
);
// 使用
遵循该模式后,Select 的值更新、菜单关闭、键盘操作及无障碍支持(如屏幕阅读器读取 tooltip)均可正常工作。