使用路由的 Material UI 菜单

IT技术 reactjs material-design material-ui
2021-03-25 03:33:37

我在玩材料用户界面。我使用路由实现了 LeftNav,但我找不到让 IconMenu 或 Menu 使用链接或路由的方法。任何人都可以向我指出一个好的来源/教程?文档不足,两个组件似乎都不像 LeftNav 那样支持“menuItems”作为属性。

6个回答

另一个姗姗来迟的更新:

containerElement不再支持componentprop ,请改用prop。

此处查看文档


2016 年 12 月编辑:linkButtonprops已弃用,您将收到警告:

Warning: Unknown props `linkButton` on <a> tag.

所以只需删除props:

<MenuItem
  containerElement={<Link to="/profile" />}
  primaryText="Profile"
  leftIcon={
    <FontIcon className="material-icons">people</FontIcon>
  }
/>

这是一个示例回购,以及现场演示


原答案:

只是想指出,如果您使用的是 react-router,您可能想要使用<Link to="/some/page" />而不是<a>标签。

为此,您需要使用containerElementprops

<MenuItem
  linkButton
  containerElement={<Link to="/profile" />}
  primaryText="Profile"
  leftIcon={
    <FontIcon className="material-icons">people</FontIcon>
  }
/>

={true}如果您只是通过true则可以省略,换句话说,<MenuItem linkButton />与 相同<MenuItem linkButton={true} />

containerElementlinkButtonprops其实是记录在按键部分,但你可以用它MenuItem为好。

我还看到 onTouchTap 是一种通过与菜单项交互来获取事件的方法。
2021-05-29 03:33:37
链接现在已损坏,无法在网站的任何位置看到任何按钮链接文档。这可能就是我所追求的,所以感谢发布。我不确定你所说的真实的东西是什么意思?
2021-06-02 03:33:37
已更新,谢谢提醒!(也更新了真实的东西)
2021-06-12 03:33:37
是的,但是使用onTouchTap/onClick来触发页面更改而不是<a>/<Link />会丢失一些本机功能,例如浏览器中的链接预览,以及用户在新选项卡中打开链接的能力。
2021-06-17 03:33:37
这对我不起作用,请参阅github.com/callemall/material-ui/issues/...
2021-06-20 03:33:37

从 Material-UI 1.0 开始,新的语法是:

<MenuItem
  component={Link}
  // the 'to' prop (and any other props not recognized by MenuItem itself)
  // will be passed down to the Link component
  to="/profile"
>
  Profile
</MenuItem>

(注意:此示例不包含图标。有一个新ListItemIcon组件。)

这也适用ListItem于 Material UI。
2021-06-04 03:33:37
完美...正如我所需要的。
2021-06-07 03:33:37

您可以将linkButttonprops设置为打开MenuItem以生成链接,然后还可以添加href.

<MenuItem linkButton={true} href="link/to/some/page" primaryText="Sample Link" />
如果这是真的,不幸的是,它似乎不再是真的。
2021-06-02 03:33:37

现有答案(2018 年 9 月)都不适用于 react 16.4.2 和 react-router 4.2.2,所以这是我的解决方案:

<Link to='/notifications' style={{ textDecoration: 'none' }}>
   <MenuItem>Notifications</MenuItem>
</Link>

如您所见,MenuItem 组件被 Link 组件包围,并且我添加了一个样式textDecoration: 'none',使该项目不带有下划线。

谢谢你。令人惊讶的是,material-ui.com/ components/menus 中缺少这样的基本信息
2021-05-24 03:33:37
我也不得不补充outline: "none"
2021-06-17 03:33:37

该propslinkButtonEnhancedButton已被弃用。href提供属性时不再需要 LinkBut​​ton 它将随 v0.16.0 删除。

<MenuItem onTouchTap={this.handleClose} href="/link/data">Link Item</MenuItem>

工作正常

这是一个选项,但会重新加载整个页面,而Link's 元素不会。可以改为简单地包装MenuItem<Link to='/'><MenuItem>Home</MenuItem></Link>
2021-06-05 03:33:37
这是截至 2016 年 11 月 29 日的最佳答案,您还可以使用诸如target="_blank"在新浏览器窗口中打开链接之类的方法
2021-06-14 03:33:37