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

React拉取companies.json时报Cannot read properties of undefined (reading 'map')错

问题原因排查

1. 初始状态下companies为undefined

你从Redux中获取companyList时,store内的companyList初始状态没有给companies设置默认空数组,组件首次渲染时,dispatch(listCompanies())异步请求还未执行完成拿到返回数据,此时companies为undefined,调用.map方法就会抛出该错误。

2. 子组件传参取值错误

父组件给BoxWithSearch传递的是company={company}对象,但子组件内直接读取props.name,取不到对应的值,即使map报错解决后复选框也会显示为空。


解决方案

第一步:给companies加兜底默认值

两种方案二选一即可:

  • 解构时设置默认值
  • 渲染时加可选链判断
    修改后父组件的关键代码:
// 解构时设置默认空数组
const { companies = [] } = companyList;

// 渲染时加可选链兜底,同时给遍历项加唯一key属性避免React告警
{companies?.map((company) => (
  <BoxWithSearch type={"companies"} company={company} key={company.slug} />
))}

第二步:修正BoxWithSearch的取值逻辑

从传入的company对象中读取name字段传给复选框:

// BoxWithSearch组件内修改Checkbox的传参
<CheckBox text={props.company.name} id={props.company.slug} />

第三步(可选):校验Redux的初始状态

确认companyReducer的初始值设置正确,从根源避免undefined问题:

const initialState = {
  companies: [],
  loading: false,
  error: null
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:15:04