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

React从DynamoDB获取数据返回undefined问题排查

问题原因及解决方法

问题原因

  1. API返回的data是包含2条企业数据的数组,但你直接尝试访问data.entityId、data.entityType这类属性——数组本身不存在这些字段,所以所有取值都是undefined。
  2. 你定义的loadedCompanies是单个CompaniesModel对象,但实际业务需要的是CompaniesModel[]数组类型,与API返回数据结构不匹配。

修正代码

将原来处理data的逻辑改为遍历数组,把每个元素转换为CompaniesModel类型,同时移除重复的setIsLoading(false)调用:

useEffect(() => {
    const fetchCompanies = async () => {
        try {
            const restOperation = get({
                apiName: "adminbbatestApi",
                path: "/companies",
            });
            const {body} = await restOperation.response;
            const data: any = await body.json();
            
            console.log('GET call succeeded: ', data);
            // 遍历返回的数组,转换每个元素为CompaniesModel
            const loadedCompanies: CompaniesModel[] = data.map(item => ({
                entityId: item?.entityId,
                entityType: item?.entityType,
                parentCompany: item?.parentCompany,
                companyType: item?.companyType,
                status: item?.status
            }));
            console.log('loadedCompanies', loadedCompanies);
            setCompaniesList(loadedCompanies);
            setIsLoading(false);
        } catch (error) {
            console.log('GET call Failed', error);
            setIsLoading(false); // 异常时也要更新加载状态
        }
    };
    fetchCompanies();
    // 移除这里的setIsLoading(false),避免加载状态提前结束
}, []);

额外说明

  • 确保setCompaniesList对应的状态变量类型是CompaniesModel[](数组),而非单个对象。
  • 异常分支也要添加setIsLoading(false),防止页面一直处于加载状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:55:19