javascript - MUI v5 - 更新后无法通过 event.currentTarget 访问 MenuItem 属性

标签 javascript reactjs material-ui

我之前使用的是 v4,我的 Select 和 MenuItems 设置如下:

const [select, setSelect] = useState('');
const [customName, setCustomName] = useState('');

const handleChange = (event) => {
    setSelect(event.target.value);
    setCustomName(event.currentTarget.getAttribute('name'));
  };

...

                <Select
                  label="Choose A Dataset"
                  onChange={handleChange}
                  value={select}
                >
                  {tables &&
                    tables.map(
                      (table, index) =>
                          (
                          <MenuItem
                            key={table.name}
                            value={table.code}
                            name={table.name}
                          >
                            {table.name}
                          </MenuItem>
                        )
                    )}
                </Select>

我可以通过访问菜单项的名称属性

event.currentTarget.getAttribute('name');

但是,迁移到 v5 后,event.currentTarget 返回 null。有什么建议吗?

最佳答案

SelectInput 有这个 onChange 定义:

onChange?: (event: SelectChangeEvent<T>, child: React.ReactNode) => void;

这意味着您可以将 child 作为 handleChange 的第二个参数进行点击。在这里,您可以使用 child.props.name 访问 name 属性。

但是值得注意的是,MenuItem 没有名称属性,如果您定义它,Typescript 会将其高亮显示为错误。为避免这种情况,您可以使用 event.target.value 查找具有匹配 code 的表并以这种方式获取名称:

const name = tables.find((table) => table.code === event.target.value).name;

关于javascript - MUI v5 - 更新后无法通过 event.currentTarget 访问 MenuItem 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70176871/

相关文章:

javascript - 如何使 <div> 标签内的元素一次消失一个

javascript - 如何检查授权 token 是否过期并强制注销?

reactjs - 根据浏览器屏幕大小有条件地渲染组件 View

javascript - 如何为数组中的每个元素分配随机颜色?

reactjs - 更改 react Material -ui 中的事件选项卡背景颜色

javascript - React Material-UI 状态未更新

javascript - 使用 javascript 从另一个页面(第 3 页)刷新页面(第 1 页)

javascript - JQuery onclick slideDown 元素和更改 id 只工作一次

javascript - 如何在点击时动态添加JSP页面

reactjs - Material-UI在主题之间来回切换时颜色不变