const [age, setAge] = React.useState("");
const [open, setOpen] = React.useState(false);
const handleChange = (event: SelectChangeEvent<typeof age>) => {
this.setAge(event.target.value);
};
const handleClose = () => {
setOpen(false);
};
const handleOpen = () => {
setOpen(true);
};
<table id="customers">
<tr>
<th>Status</th>
<th>Comments</th>
</tr>
{ViewChecklistItem.map((row) => (
<tr key={row.TaskId}>
<td>
<FormControl sx={{ m: 1, minWidth: 120 }}>
<InputLabel id="demo-controlled-open-select-label">Age</InputLabel>
<Select
labelId="demo-controlled-open-select-label"
id="demo-controlled-open-select"
open={open}
onClose={handleClose}
onOpen={handleOpen}
value={age}
label="Age"
onChange={handleChange}
>
<MenuItem value={10}>Ten</MenuItem>
<MenuItem value={20}>Twenty</MenuItem>
<MenuItem value={30}>Thirty</MenuItem>
</Select>
</FormControl>
</td>
<td>View comments</td>
</tr>
))}
</table>
请帮我解决问题是当我选择第一个下拉菜单将打开四个下拉菜单。
这里我附上我的截图
我想选择第一个下拉打开唯一的一个下拉。不为其他下拉。
1条答案
按热度按时间rsaldnfx1#
你正在通过一个数组来创建多个
<select>
组件,但是所有的<select>
都有相同的open
属性值,所以它们一起打开和一起关闭,这是有意义的。它们也有相同的value
属性值。因此每个
<select>
需要具有其自己open
值和其自己的value
年龄。一种解决方案是将
open
和age
的useState钩子声明为数组。现在,让我们更新我们的
handleClose
、handleClose
和handleChange
:最后在jsx:
ps:我对 typescript 不太熟悉