【问题标题】:How to determine which icon is clicked in a menu with Material-UI icons如何确定在具有 Material-UI 图标的菜单中单击了哪个图标
【发布时间】:2019-07-10 02:48:35
【问题描述】:

点击material-ui菜单中的图标时,event.target不提供值来确定点击了哪个图标

这是我的代码:

<ListItem button id="Dashboard" onClick={handleMenuListClick}>
  <ListItemIcon>
    <DashboardIcon />
  </ListItemIcon>
  <ListItemText primary="Dashboard" />
</ListItem>

单击按钮文本区域(即“仪表板”)时,我能够读取 event.target 值以确定单击了哪个菜单列表项。单击 DashboardIcon 时,会触发处理程序,但 event.target 会生成 svg(例如 svg class="MuiSvgIcon-root"...

有没有更好的方法来确定点击了哪个图标?

【问题讨论】:

  • onClick={() = handleMenuListClick('Dashboard')}?

标签: reactjs material-ui


【解决方案1】:

就像我在 cmets 中所说的那样,我会在这里创建一个内联 lambda 或绑定函数来执行此操作。明确您的代码并传递您期望的值。从长远来看,它会更不容易出错:) 你应该定义一个常量/枚举来映射。

const Pages = {
  dashboard: 'Dashboard',
  profile: 'Profile'
}

然后渲染它

<ListItem
  button
  id={Pages.dashboard}
  onClick={() => handleMenuListClick(Pages.dashboard)}
>
  <ListItemIcon>
    <DashboardIcon />
  </ListItemIcon>
  <ListItemText primary="Dashboard" />
</ListItem>

在 Typescript 中你可以定义枚举 ?

enum Pages {
  dashboard = 'dashboard',
  profile = 'profile'
}

【讨论】:

  • 图标和文本都很好用。也干净了许多。非常感谢。
  • @GregHouse 是的!乐意效劳! :) 请记住,当您有能力时,请单击复选标记将答案标记为已解决,您将获得几分,我们可以致电/考虑此答案已关闭! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
  • 2013-09-11
  • 2018-07-15
相关资源
最近更新 更多