【发布时间】:2019-05-15 13:43:49
【问题描述】:
我正在使用 map 循环从服务器获取的数组对象,每个对象用于表中的一行来显示数据。我想通过调用函数并传递给索引对每一行执行特定操作。 这里的代码:
<TableBody>
{productsData.map((product, index) => {
return (
<TableRow key={product.productId}>
<TableCell>
<Button
aria-owns={anchorEl ? `manipulation${index}` : undefined}
aria-haspopup="true"
onClick={handleClick}
className={classes.button}
size="small"
variant="contained"
>
Thao tác
</Button>
<Menu id={`manipulation${index}`} anchorEl={anchorEl} open={Boolean(anchorEl)} onClose={handleClose}>
<MenuItem onClick={**handleOpen(index)**}>Xem trước</MenuItem>
</Menu>
</TableCell>
</TableRow>
)
})}
</TableBody>
我声明handleOpen的方式:const handleOpen = (index) => () => {...}
=>我预计handleOpen会像这样呈现:第0行的handleOpen(0),第1行的handleOpen(1)。但它总是以数组的最后一个索引结束。可能是关于javascript中的关闭,但我不知道如何修复
请给我任何建议。提前致谢。
【问题讨论】:
-
**handleOpen(index)**我想这不是你所拥有的?也许 ->{() => handleOpen(index)} -
@Keith 我编辑了它,但不起作用:((
标签: javascript reactjs loops material-ui