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

如何在React中处理Flask返回的Response对象并获取字典列表数据

问题根因

1. JS端Promise链逻辑错误

你当前的Promise链式调用中,setAllActivities是React useState提供的状态更新方法,该方法没有返回值,执行后会返回undefined,因此下一个then回调接收到的入参自然是undefined,这是你打印出undefined的直接原因。
另外response.json()已经自动将接口返回的JSON字符串转换为JS对象,不需要再手动执行JSON.parse操作。

2. Flask端序列化兼容问题

Python原生的datetime对象无法被jsonify直接序列化,虽然你本地打印eqtls正常,但接口实际返回时会抛出序列化异常,容易导致前端拿到异常响应。


修正后的代码

Flask端 api.py

只需要修改serialize方法里的date_added字段,转成ISO格式字符串即可:

def serialize(self):
    return {
        'id': self.id, 
        'name': self.name,
        'description': self.description,
        'xcoord': self.xcoord, 
        'ycoord': self.ycoord,
        # 把datetime转成ISO标准字符串,前端可以直接转成JS Date对象
        'date_added': self.date_added.isoformat() if self.date_added else None
    }

React端 app.js

调整Promise链的逻辑,把状态更新和日志打印放在同一个then回调里即可:

useEffect(()=> {
    fetch('/allActivities').then(response => {
        if(response.ok){
            console.log(response)
            return response.json()
        }
        // 加上错误情况的抛出,方便排查问题
        throw new Error('接口请求异常')
    }).then(data => {
        console.log(data);
        // 这里已经可以直接访问列表元素了
        console.log(data[0]?.name)
        setAllActivities(data)
    }).catch(err => {
        // 加错误捕获,方便定位问题
        console.error('请求出错:', err)
    })
},[])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:06:02