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

Ant Design Table报错:rawData.some is not a function求助

问题原因

你直接把async函数getTableData()的返回值传给dataSource,但async函数执行后返回的是Promise对象,而Ant Design Table的dataSource要求传入数组类型。Table内部会调用数组的some方法,Promise没有这个方法,所以抛出了rawData.some is not a function错误。

解决方案

需要用状态存储表格数据,通过useEffect触发数据请求,而非直接将异步函数结果传给dataSource:

  • 定义状态存储表格数据
  • 用useEffect调用异步函数获取数据并更新状态
  • 补全useCallback的依赖项(原代码依赖项为空,GRNid变化时不会重新请求数据)
修正后的代码示例
import { useState, useEffect, useCallback } from 'react';
import { Table } from 'antd';

// 假设columns已提前定义
const YourComponent = ({ GRNid }) => {
  // 定义状态存储表格数据
  const [tableData, setTableData] = useState([]);

  // 补全useCallback的依赖项:GRNid
  const getTableData = useCallback(async () => {
    const data = await retrieveGRNASN(GRNid) ?? [];
    console.log('data', data);
    setTableData(data);
  }, [GRNid]);

  // 组件挂载或GRNid变化时触发数据请求
  useEffect(() => {
    getTableData();
  }, [getTableData]);

  return (
    <Table
      dataSource={tableData}
      columns={columns}
      size="small"
      pagination={false}
    />
  );
};

export default YourComponent;
额外注意点
  • 确保retrieveGRNASN返回的数据是数组格式,如果后端返回的是包含数据字段的对象(比如{ data: [...] }),需要先解构取到数组部分,示例:const res = await retrieveGRNASN(GRNid); const data = res?.data ?? [];
  • 可以额外定义loading状态,传入Table的loading属性,提升用户等待体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:45:35