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
相关产品推荐
相关产品推荐

