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

MantineReactTable数据无法显示求助:数据可下载但表格行空白

解决MantineReactTable数据下载正常但表格行空白的问题

可能的原因及解决方案

1. 数据结构不匹配或缺失空值检查

代码中直接通过fetchedData[0]生成列配置,但如果fetchedData为空数组,会触发报错导致列和数据无法正常设置。另外需要确认getDataFromFastmagSql返回的每个数据对象的键名,和生成列的accessor完全一致(包括大小写、特殊字符)。

修改prepareColumns函数,添加空数据处理并打印数据确认结构:

function prepareColumns() {
  getDataFromFastmagSql("SELECT * FROM produits LIMIT 15")
    .then((fetchedData) => {
      // 打印数据确认结构
      console.log("获取到的数据:", fetchedData);
      if (!fetchedData || fetchedData.length === 0) {
        console.error("未获取到有效数据");
        return;
      }
      const fetchedColumns = Object.keys(fetchedData[0]).map((key) => ({
        header: key,
        accessor: key,
        id: key,
      }));
      console.log("生成的列配置:", fetchedColumns);
      setColumns(fetchedColumns);
      setData(fetchedData);
    })
    .catch((error) => {
      console.error("数据获取失败:", error);
    });
}

2. 移除多余的useMemo避免更新延迟

当前用useMemo包裹columnSet生成columns,但这个处理没有实际优化作用,反而可能导致表格无法及时获取最新的列配置。直接使用columnSet作为表格的columns属性即可:

// 移除多余的useMemo代码
// const columns = useMemo<MRT_ColumnDef[]>(() => columnSet, [columnSet]);

// 表格组件直接传入columnSet
<MantineReactTable
  columns={columnSet}
  data={dataSet}
  enableRowSelection
  enableColumnOrdering
  enableGlobalFilter={false}
/>

3. 检查版本兼容性

确保mantine-react-table和@mantine/core的版本兼容,版本不匹配可能引发渲染异常,可参考官方文档确认依赖对应关系。

4. 处理特殊键名

如果数据中的键名包含空格、特殊符号等,需要确保列的accessor完全对应,或者对键名做统一处理后再生成列配置。

修改后的完整代码示例

import { useState } from "react";
import getDataFromFastmagSql from "../Services/getDataFromFastmagSql";
import { Container, Grid, Button } from "@mantine/core";
import { MRT_ColumnDef, MantineReactTable } from "mantine-react-table";

function TableResult() {
  
  const [dataSet, setData] = useState([]);
  const [columnSet, setColumns] = useState<MRT_ColumnDef[]>([]);

  function prepareColumns() {
    getDataFromFastmagSql("SELECT * FROM produits LIMIT 15")
      .then((fetchedData) => {
        console.log("获取到的数据:", fetchedData);
        if (!fetchedData?.length) {
          console.error("无有效数据返回");
          return;
        }
        const fetchedColumns = Object.keys(fetchedData[0]).map((key) => ({
          header: key,
          accessor: key,
          id: key,
        }));
        console.log("列配置:", fetchedColumns);
        setColumns(fetchedColumns);
        setData(fetchedData);
      })
      .catch((error) => {
        console.error("数据请求错误:", error);
      });
  }

  return (
    <Container fluid>
      <Grid>
        <Grid.Col span={12}>
          <Button variant="light" onClick={prepareColumns}>Run this ma caille</Button>
          <MantineReactTable
            columns={columnSet}
            data={dataSet}
            enableRowSelection
            enableColumnOrdering
            enableGlobalFilter={false}
          />
        </Grid.Col>
      </Grid>
    </Container>
  );
}
export default TableResult;

修改完成后,打开浏览器控制台查看打印的日志,确认数据结构和列配置是否匹配,即可定位并解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:15:38