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

如何将Material UI Menu渲染为<nav>,其子项改为<a>?

解决Material UI Menu结构替换问题

要把Menu默认的<div> > <ul> <li>结构改成<div> <nav> <a>,你可以通过Menu的MenuListProps属性替换内部的<ul>为<nav>,具体做法如下:

直接给Menu组件添加MenuListProps={{ component: 'nav' }},结合你已经设置好component='a'的MenuItem,就能得到目标结构:

<Menu open={true} MenuListProps={{ component: 'nav' }}>
  <MenuItem component='a'>Profile</MenuItem>
  <MenuItem component='a'>Settings</MenuItem>
  <MenuItem component='a'>Logout</MenuItem>
</Menu>

原理是:Menu组件内部默认渲染MenuList(对应原来的<ul>),虽然Menu本身没有component属性,但它支持通过MenuListProps把配置传递给内部的MenuList组件。设置component="nav"后,MenuList会渲染成<nav>标签,再配合已经改成<a>的MenuItem,最终的DOM结构就是你需要的<div> > <nav> > <a>。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:20:21