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

Material React Table折叠模式下行间距问题及解决咨询

解决Material-React-Table可折叠表格行间隙问题

要消除折叠展开状态下的行间隙,实现紧凑表格效果,主要从移除默认间距、调整行内边距、消除子表格额外边距这几个方向入手,以下是具体实现方案:

1. 自定义主表格行样式,移除默认间距

在主表格的rowProps中直接设置行的内边距和外边距,覆盖组件默认样式:

const table = useMaterialReactTable({
  // 其他配置项...
  rowProps: ({ row }) => ({
    sx: {
      margin: 0,
      padding: 0,
      '& td': {
        padding: '4px 16px', // 按需缩小内边距,默认16px会显得松散
        // 展开时去掉当前行下边框,避免和子表格产生双重边框间隙
        borderBottom: row.getIsExpanded() ? 'none' : '1px solid rgba(224, 224, 224, 1)',
      },
    },
  }),
});

2. 调整子表格样式,消除额外边距

子表格默认自带边框、外边距或内边距,需要完全去除:

// 子折叠表格组件示例
const CollapsibleSubTable = ({ data }) => {
  const subTable = useMaterialReactTable({
    columns: subColumns,
    data,
    enableSorting: false,
    enablePagination: false,
    // 关键样式调整
    muiTableProps: {
      sx: {
        margin: 0,
        padding: 0,
        border: 'none',
        '& tr': {
          margin: 0,
          '& td': {
            padding: '4px 16px',
            borderBottom: '1px solid rgba(224, 224, 224, 1)',
          },
        },
      },
    },
  });

  return <MaterialReactTable table={subTable} />;
};

3. 处理展开行容器的间距

如果展开行的容器带有默认padding,需要一并移除:

// 在主表格的expandedRowRenderer中设置容器样式
expandedRowRenderer: ({ row }) => (
  <Box sx={{ padding: 0, margin: 0 }}>
    <CollapsibleSubTable data={row.subRows} />
  </Box>
),

补充:全局样式覆盖(可选)

如果组件内样式不生效,可通过MUI主题全局调整表格行的默认间距:

const theme = createTheme({
  components: {
    MuiTableRow: {
      styleOverrides: {
        root: {
          margin: 0,
          '& td': {
            padding: '4px 16px',
          },
        },
      },
    },
  },
});

通过以上调整,主表格行和子表格行就能完全贴合,消除间隙,实现紧凑的折叠表格效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:44:51