You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级@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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:30:42