reactjs - react在mui-datatable的一列中创建菜单时,只返回列表最后一个元素的数据
问题描述
在 react 中使用 mui-datatable 库,使用 customBodyRender 创建一个自定义列以添加菜单,当您单击其中一个选项时,它将执行一个操作。
问题是当你点击action时,进入函数的数据总是表中最后一条记录的数据,不管选择第一行的菜单,数据总是最后的。
我需要的是,当我单击一行的菜单时,它会返回该行的数据。
示例代码:https ://codesandbox.io/s/wonderful-mclaren-ivvlq?file=/src/App.js
解决方案
我也经历过这种情况。我解决它的方法是在选择菜单图标时在状态变量中设置行选择索引,而不是在 MenuItem 内。索引从 customBodyRenderLite 或 customBodyRender 传递。
const [anchorIndex, setAnchorIndex] = useState(0);
const handleClick = (event, index) => {
setAnchorEl(event.currentTarget);
setAnchorIndex(index);
};
const iconButtonElement = (index) => {
return (
<div>
<IconButton
aria-label="More"
aria-owns={open ? "long-menu" : null}
aria-haspopup="true"
onClick={event => handleClick(event, index)}
>
<MoreVertIcon color={"action"}/>
</IconButton>
{rightIconMenu(index)}
</div>
)
}
当某些东西应该对菜单项进行操作时,它将使用状态中的值。
const rightIconMenu = () => {
return (
<Menu elevation={2} anchorEl={anchorEl} open={open} onClose={onMenuClose}>
<MenuItem onClick={handleCellClick}>View</MenuItem>
</Menu>
)
};
function handleCellClick() {
history.push('/vehicleForm', {data: currentDataSet[anchorIndex]});
}
推荐阅读
- python-3.x - 熊猫中有两列的变量
- android - Android 设计支持库无法编译
- ios - 如何在没有任何 Apple Store 帐户的情况下在 Macbook Simulator 上运行 iOS 应用程序?
- javascript - 什么是 Salesforce 开发
- android - 在功能性 Espresso 测试中模拟 Firebase 消息
- razor - 想要在 ASP.NET Core 2.1 中为 ViewComponent 创建一个单元测试
- c++ - 为什么主函数没有传入参数?
- javascript - 如何使用 Jquery、Ajax 发送 SOAP 标头并从服务器获取响应
- php - 如果使用方法 GET,如何加密 URL 参数
- python - 如何使用matplotlib在python中绘制一个完美光滑的球体?