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

React Native请求报错:TypeError: Cannot read property 'votes' of undefined

问题分析与解决:TypeError: Cannot read property 'votes' of undefined

核心问题

前端调用fetch获取后端数据时出现两个关键错误:

  • TypeError: Cannot read property 'votes' of undefined:后续逻辑尝试访问undefined对象的votes属性
  • TypeError: Already read:Response对象的响应体被重复读取

错误原因

  1. 第一个then回调未返回解析后的Promise:原代码中第一个then执行了resp.json()但没有返回结果,导致第二个then接收的json参数为undefined,自然无法访问json.votes。
  2. 重复读取响应体:原代码在同一个then里连续调用两次resp.json(),而Response的响应体只能被读取一次,第二次调用直接抛出Already read错误。

修复方案

修改getData方法,确保只读取一次响应体,并且正确返回解析后的Promise传递给后续逻辑:

const getData = () => {
    setOnRefresh(true);
    fetch('https://soppinga.com/api/Home?guid=' + route.params.id + "&userId=" + "1", {
        method: 'GET',
        headers: {
            'Content-Type': 'application/json'
        }})
        .then((resp) => {
            console.log(resp); // 打印响应元数据,此时响应体未被读取
            return resp.json(); // 返回解析JSON的Promise,供下一个then处理
        })
        .then((json) => {
            console.log(json); // 打印完整的返回数据
            loadData(json);
            setOnRefresh(false);
        })
        .catch((error) => {  
            console.log(">>> " + error); 
        })
        .finally(() => null);
}

补充说明

  • 后端接口返回的数据结构完全正常,只要前端正确接收,就能正常访问json.poll和json.votes。
  • 之前功能正常可能是因为代码没有重复读取响应体,且正确返回了解析后的Promise,后续修改日志逻辑时不小心破坏了这一点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:37:14