React从DynamoDB获取数据返回undefined问题排查
问题原因及解决方法
问题原因
- API返回的
data是包含2条企业数据的数组,但你直接尝试访问data.entityId、data.entityType这类属性——数组本身不存在这些字段,所以所有取值都是undefined。 - 你定义的
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
相关产品推荐
相关产品推荐

