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

MUI X-DataGrid中GridActionsCellItem传参报错及操作列需求

解决@mui/x-data-grid中GridActionsCellItem的类型错误并实现三点下拉操作列

错误原因

你直接把<GridActionsCellItem />组件实例作为getActions的返回值了,但DataGrid的actions列要求getActions返回的是GridActionsCellItem的配置对象数组,而非JSX元素。那些报错缺失的nonce、onResize等属性,是DataGrid内部传递给单元格组件的私有属性,直接返回组件会导致类型不匹配。

正确配置方式

下面是实现带有三点下拉菜单的操作列的完整示例:

import { DataGrid, GridColDef, GridActionsCellItemProps } from '@mui/x-data-grid';
import EditIcon from '@mui/icons-material/Edit';
import DeleteIcon from '@mui/icons-material/Delete';
import MoreVertIcon from '@mui/icons-material/MoreVert';

// 操作函数示例
const handleEdit = (id: number) => {
  console.log('编辑行:', id);
};

const handleDelete = (id: number) => {
  console.log('删除行:', id);
};

const columns: GridColDef[] = [
  // 其他业务列配置...
  {
    field: 'actions',
    type: 'actions',
    width: 100,
    getActions: (params): GridActionsCellItemProps[] => [
      // 直接显示在单元格的操作项(可选)
      {
        icon: <EditIcon />,
        label: '编辑',
        onClick: () => handleEdit(params.id as number),
        showInMenu: false, // 默认值,不放入下拉菜单
      },
      // 放入三点下拉菜单的操作项
      {
        icon: <DeleteIcon />,
        label: '删除',
        onClick: () => handleDelete(params.id as number),
        showInMenu: true, // 标记为菜单内选项
      },
      // 仅显示三点菜单的配置(如果不需要直接显示的操作项)
      // {
      //   icon: <MoreVertIcon />,
      //   label: '更多操作',
      //   showInMenu: false,
      //   menuItems: [
      //     { label: '编辑', onClick: () => handleEdit(params.id as number) },
      //     { label: '删除', onClick: () => handleDelete(params.id as number) },
      //   ],
      // },
    ],
  },
];

// 组件使用
export default function MyDataGrid() {
  return <DataGrid rows={[]} columns={columns} />;
}

关键注意点

  • getActions必须返回GridActionsCellItemProps类型的对象数组,DataGrid会自动将这些对象渲染为GridActionsCellItem组件,并注入内部所需的属性,彻底解决类型错误。
  • 通过showInMenu: true将操作项放入三点下拉菜单;如果想仅显示菜单图标,可配置一个带MoreVertIcon的项,并用menuItems定义下拉选项。
  • 确保columns的类型为GridColDef[],TypeScript会自动推导getActions的参数类型,无需手动指定。

内容的提问来源于stack exchange,提问作者deni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:20:23