Material UI Select组件标签显示异常:展示选项值而非预设标签
Material UI Select组件标签不显示问题修复方案
问题原因
代码中存在3处不符合Material UI Select组件规范的写法,导致标签无法正常渲染:
- 缺少独立的
InputLabel组件:Select自带的label属性仅用于和外部InputLabel关联匹配,不会单独渲染文本内容 - 错误将
select属性加在了父级FormControl组件上,该属性属于Select组件的自有属性 - Select组件缺少与标签对应的关联ID,无法和InputLabel完成联动
修复后的代码示例
// 先确保从MUI中引入InputLabel组件 import { FormControl, InputLabel, Select, MenuItem } from '@mui/material'; const [inputFields, setInputFields] = useState([ { id: uuidv4(), relationship: '', initiatorMessage: '', email: '' }]); inputFields?.map(inputField => { return ( ... <FormControl className={classes.formControl} > {/* 新增InputLabel组件,设置唯一ID区分多表单项 */} <InputLabel id={`relationship-label-${inputField.id}`}>relationship</InputLabel> <Select name="relationship" labelId={`relationship-label-${inputField.id}`} // 绑定对应label的ID id={`relationship-select-${inputField.id}`} label="relationship" value={inputField.relationship} onChange={e => handleChangeInput(inputField.id, e)} inputProps={{ classes: { root: classes.root, }, }} > {relationships.map(option => ( <MenuItem key={option.value} value={option.value}> {option.value} </MenuItem> ))} </Select> </FormControl> }) }
补充注意点
未选择状态下label会直接作为占位符展示在输入框内,选中选项后label会自动上浮到输入框顶部,不需要额外配置,只要保证初始值inputField.relationship默认是空字符串即可。
内容的提问来源于stack exchange,提问作者Nhan Nguyen
相关产品推荐
相关产品推荐

