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

如何为带select属性的MUI TextField设置下拉菜单最大高度?

解决MUI TextField(native select模式)下拉菜单最大高度问题

你当前代码里设置了SelectProps={{ native: true }},这意味着MUI会渲染原生HTML select元素,而非MUI自定义的Menu组件,所以MenuProps自然不会生效——MenuProps是给MUI自定义Menu组件用的,原生select不识别这个属性。

要给原生select的下拉菜单设置最大高度,需要直接给原生select元素添加样式,具体写法如下:

<TextField
  fullWidth
  label="Select State"
  name="state"
  onChange={handleChange}
  required
  select
  SelectProps={{
    native: true,
    sx: {
      maxHeight: 200,
      overflowY: 'auto'
    }
  }}
  value={values.state}
>
  {states.map((option) => (
    <option
      key={option.value}
      value={option.value}
    >
      {option.label}
    </option>
  ))}
</TextField>

原理说明

  • 当native: true时,SelectProps中的属性会直接传递给内部渲染的原生<select>标签
  • 通过sx给原生select设置maxHeight和overflowY: 'auto',当下拉选项过多时,会自动出现垂直滚动条,限制下拉区域的高度

如果你不需要依赖原生select的特性,也可以去掉native: true,此时就能使用MenuProps控制下拉菜单高度,写法如下:

<TextField
  // 其他属性不变
  select
  SelectProps={{
    MenuProps: {
      sx: { maxHeight: 200 }
    }
  }}
>
  {/* 选项内容不变 */}
</TextField>

内容的提问来源于stack exchange,提问作者Rubén Pérez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:52:35