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

React Antd Table无法加载Postgres动态数据问题求助

解决Antd Table无法渲染Express返回的Postgres数据问题

你的核心问题是直接把fetch返回的Response对象传给了Table的dataSource,但Antd Table需要的是解析后的JSON数组,不是原始的响应对象。浏览器能看到接口返回数据,是因为DevTools帮你解析了响应,但代码里没做这一步。

按下面的步骤修改代码即可解决:

1. 解析响应为JSON数据

fetch返回的response是HTTP响应对象,不是直接的业务数据,需要调用response.json()方法(异步操作,要加await)解析成JSON格式的数组/对象。

2. 修正初始状态值

把useState的初始值从null改成空数组[],因为Antd Table的dataSource期望接收数组类型,null会导致表格无法正常识别数据状态。

修改后的完整代码

const columns: ColumnsType<DataType> = [
    {
        title: 'Name',
        dataIndex: 'name',
        key: 'name',
        render: (text) => <a>{text}</a>
    },
    {
        title: 'Create Date',
        dataIndex: 'created_at',
        key: 'created'
    },
    {
        title: 'Created By',
        dataIndex: 'created_by',
        key: 'createdBy'
    }
]

function App() {
    // 初始值设为空数组,匹配Table期望的数组类型
    const [dataFromPg, setDataFromPg] = useState<DataType[]>([]);
    
    useEffect(() => {
        async function fetchData() {
            try {
                const response = await fetch('/profileTable');
                // 解析响应体为JSON数据
                const data = await response.json();
                setDataFromPg(data);
            } catch (error) {
                // 可选:处理请求失败的情况
                console.error('获取数据失败:', error);
            }
        }
        fetchData();
    }, []);
      
    return (
        // 加上rowKey,用数据里的唯一标识(比如name或数据库ID),避免Antd警告
        <Table columns={columns} dataSource={dataFromPg} rowKey="name" />
    )
}

额外提示

  • 如果接口返回的是包含数组的对象(比如{ list: [...] }),要改成setDataFromPg(data.list),确保传给Table的是纯数组。
  • rowKey属性必须指定,用数据中唯一的字段,这是Antd Table的性能优化要求,也能避免控制台警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:30:13