React遍历API数组渲染段落时报TypeError undefined错误排查
报错根因
- 核心问题是数据访问路径写错:接口返回的
post.game_indices是数组类型,不是单个对象,你直接在数组上读取.version属性得到的必然是undefined,再尝试读取undefined的.name属性就会抛出你看到的类型错误。 - 控制台能打印出完整数据不代表代码执行路径合法:浏览器控制台打印对象时采用懒加载机制,你手动点击展开对象时看到的是对象完成赋值后的最终状态,和渲染执行到map代码行时的属性访问逻辑是否正确没有关系。
- 你现有代码里types、abilities的写法也存在隐患:硬编码读取数组下标
[0]、[1],如果对应数组长度不足2会触发同类undefined报错,长度超过2则会漏渲染内容。
修正代码
把错误的game_indices渲染逻辑替换为正确的数组遍历写法:
{post.game_indices.map((entry, idx) => ( <p key={idx}>{entry.version.name}</p> ))}
如果需要和其他模块一样加显隐控制,新增对应的state和触发按钮即可。另外建议把types、abilities的硬编码下标也改为map遍历写法,从根源避免下标越界问题,以types为例:
{showTypes && post.types.map((entry, idx) => ( <p key={`type-${idx}`}>{entry.type.name}</p> ))}
abilities模块按相同逻辑修改即可。
内容的提问来源于stack exchange,提问作者user19051554
相关产品推荐
相关产品推荐

