javascript - 获取选项 Material-UI React 中选择的第一个元素
问题描述
大家好,我正在使用 React Material UI 选择。当我更改选项时,我会触发 onChange 方法并在所选值上添加 attr,那么我如何将项目的第一个选项设置为选中状态。
value={} **// I want to display first option to selected without trigger on Change method**
onChange={(e) => {
data.forEach(a => {
if (a.Id === e.target.value) {
a.selected = true
} else {
a.selected = false
}
});
}}
>
<MenuItem disabled value=""><em>Please Select</em></MenuItem>
{data.map((item) => {
return (
<MenuItem key={item.Id} value={item.Id} >
{item.Ad}
</MenuItem>
);
})}
</Select>
解决方案
您的组件需要 2 个状态,data
并且active
. data
您要在下拉列表中显示的项目在哪里,并active
指示当前选择的项目。通常,我们使用useEffect
钩子来初始化状态。
此外,我们必须重新实现您的onChange
功能。我建议您查看有关如何更新功能组件状态的文档https://reactjs.org/docs/hooks-reference.html#usestate。
无论如何,您可以将代码更改为此
export default function App() {
const [data, setData] = React.useState(DATA);
// select the first option by default
const [active, setActive] = React.useState(DATA[0].Id);
function onChange(event) {
setActive(event.target.value);
}
return (
<Select value={active} onChange={onChange} fullWidth>
<MenuItem disabled value="">
<em>Please Select</em>
</MenuItem>
{data.map((item) => (
<MenuItem key={item.Id} value={item.Id}>
{item.Ad}
</MenuItem>
))}
</Select>
);
}
...我创建了一个代码框供您试用。
推荐阅读
- amazon-web-services - 通过 ASG 启动时为 Terraform 提取 EC2 实例 ID
- java - 如何解决 Java SpringBoot Web 应用程序中的 POM.XML 错误?
- reactjs - 在 react-konva 中添加拖放连接器
- sequence - 雪花:试图使一列默认使用序列中的值
- r - 计算线性回归线的斜率
- python - 字符串中的条件替换 - Python
- javascript - 如何在 html 中创建新的容器标签
- python - 如何根据二维形状的一系列输入正确预测一个值?
- python - 使用 itertools [python] 将字符插入旧索引处的字符串
- xaml - 在 FlipView 中显示绑定数据