Material-UI Select选中值无法更新到状态怎么办?
我在用Material-UI的Select组件时,选中选项后状态一直没变。按照文档写了value和onChange,但控制台打日志发现selected变量还是空的…
代码是这样写的:
import { Select, MenuItem } from '@mui/material';
function MyForm() {
const [selected, setSelected] = useState('');
return (
<Select
value={selected}
onChange={(e) => setSelected(e.target.value)}
>
<MenuItem value="apple">苹果</MenuItem>
<MenuItem value="banana">香蕉</MenuItem>
</Select>
);
}
奇怪的是,当选项渲染出来后,点击选项会有视觉反馈,但selected状态就是不更新。试过把value改成number类型,或者把MenuItem的value写成数字,结果还是一样…
不过最可能的原因是:你没给 Select 加一个必要的属性 labelId,导致内部绑定出问题。复制这个:
关键是得用 FormControl 包一层,加 InputLabel 并通过 labelId 关联起来。MUI 的 Select 比原生麻烦点,但这套结构跑起来就没问题了。我也是被坑过才记得这些。