升级@mui/x-data-grid后GridActionsCellItem类型错误求助
解决@mui/x-data-grid升级后GridActionsCellItem的类型错误
这个问题我之前升级MUI Data Grid的时候也碰到过,核心原因是新版本的GridActionsCellItem组件的Props类型做了重大调整,不再像旧版本那样只需要icon和label就能正常工作了。
报错原因拆解
从你给出的错误信息来看,类型检查提示你缺少onResize、onResizeCapture、showInMenu这些属性——本质是因为新版本的组件会根据showInMenu的值来推断不同的Props类型:
- 如果不指定
showInMenu,TypeScript会默认推断你要使用「菜单模式」的配置,这就要求你传入菜单相关的额外属性; - 而我们通常只是想在单元格里显示一个按钮,这时候需要显式指定
showInMenu={false},同时必须提供action属性来处理点击逻辑(旧版本的onClick已经被替换成action了)。
具体修复方案
你只需要给GridActionsCellItem补充两个关键属性:action和showInMenu,修改后的代码如下:
// 先定义对应的删除处理函数 const handleDelete = (id: string | number) => { // 这里写你的删除逻辑,比如调用API更新数据 console.log('Deleting item:', id); }; const columns = React.useMemo( () => [ { field: 'displayName', headerName: 'Name', minWidth: 100, flex: 1 }, { field: 'actions', type: 'actions', width: 70, getActions: params => [ <GridActionsCellItem icon={<DeleteIcon />} label="Delete" // 替换成你的点击处理逻辑 action={() => handleDelete(params.id)} // 显式设置为false,告诉组件我们要的是单元格内的按钮,而非菜单选项 showInMenu={false} /> ] } ], // 注意依赖数组要包含用到的handleDelete函数 [handleDelete] );
额外说明
如果你需要把操作放到表格的右键菜单(或行菜单)里,只需要把showInMenu设为true,这时候组件会自动把该操作加入菜单,不需要额外配置那些onResize相关属性——TypeScript会自动匹配对应的菜单模式Props类型。
之前你尝试添加onClick没用,是因为新版本的GridActionsCellItem已经不再支持直接传入onClick,而是统一用action来处理点击事件逻辑了。
内容的提问来源于stack exchange,提问作者Dijiflex
相关产品推荐
相关产品推荐

