【发布时间】:2019-09-21 16:04:52
【问题描述】:
最近我尝试使用 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>
</>);
})
)
}
这是菜单的期望行为吗?如何解决?
【问题讨论】:
-
在返回前尝试map函数添加让curId=id;并在 onclick 中使用它。
-
@Oleg 仍然打印最后一个元素。 :( 我将编辑添加这一行。感谢您的建议!
-
尝试使用地图第二个参数中的索引并通过索引对其进行访问。让 curIndex=index;
-
对不起,你能不能像以前一样在点击功能中而不是在返回之前推动让
标签: reactjs material-ui