最近我尝试使用 MaterialUI(4.3.3) 的 Menu 和 MenuItem 组件来实现一个简单的下拉菜单。
MenuItem 上的 onclick 事件行为不正确。当console.log(id)
被调用时,每个部件从呼应样本阵列的最后一个元素。我切换到ListItem,问题消失了。
const Test = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const sampleArray = ["test1", "test2", "test3"];
const open = Boolean(anchorEl);
return (
sampleArray.map(id => {
let curID = id;
return (<>
<IconButton
aria-label="more"
aria-controls="long-menu"
aria-haspopup="true"
onClick={event => setAnchorEl(event.currentTarget)}
>
<MoreHorizIcon />
</IconButton>
<Menu
elevation={0}
id="long-menu"
anchorEl={anchorEl}
keepMounted
open={open}
transformOrigin={{
vertical: 'top',
horizontal: 'center',
}}
onClose={() => setAnchorEl(null)}
>
<MenuItem onClick={() => {
setAnchorEl(null);
console.log(curID); // should be each individual id, but here always "test3"
}}>Test</MenuItem>
</Menu>
</>);
})
)
}
这是 Menu 想要的行为吗?如何解决?