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

MUI v5升级后无法通过event.currentTarget获取MenuItem属性问题咨询

问题原因

MUI v5 重构了 Select 组件的内部事件处理逻辑,适配 React 17+ 的事件委托机制,onChange 回调触发时原生事件的 currentTarget 已经被解绑重置,因此会返回 null,无法沿用 v4 版本通过 currentTarget 拿自定义属性的写法。

可行解决方案

方案1:通过 onChange 回调第二个参数直接取属性(改动最小)

MUI v5 的 Select 组件 onChange 回调默认提供第二个参数,就是当前选中的 MenuItem 组件实例,直接从实例的 props 中就能拿到你定义的 name 属性,原有 Select、MenuItem 代码无需修改,只需要调整 handleChange 逻辑即可:

const handleChange = (event, selectedItem) => {
  setSelect(event.target.value);
  setCustomName(selectedItem.props.name);
};

方案2:提前构建值映射表(性能最优)

如果你的业务场景不依赖组件属性,可以提前把 table.code 和 table.name 构建成映射对象,选中后直接用值查询对应名称,完全不依赖事件和组件逻辑,稳定性更高:

// 提前构建code到name的映射
const codeToName = tables.reduce((res, table) => {
  res[table.code] = table.name;
  return res;
}, {});

const handleChange = (event) => {
  const selectedCode = event.target.value;
  setSelect(selectedCode);
  setCustomName(codeToName[selectedCode]);
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:15:05