React使用Styled Component时出现.map is not a function报错如何解决?
问题原因
map是数组专属方法,报错xxx.map is not a function本质是你调用map的目标值不是数组。
从你提供的对象结构可以看到,object.attributeCollection.first是单个对象,不是数组,因此不具备map方法。
解决方案
方案1:仅渲染单个first属性
如果你本身的需求就是渲染first对应的单个属性,直接删除map逻辑即可:
<StyledRow> <LabelAssistant attribute={object.attributeCollection.first} /> </StyledRow>
方案2:渲染属性集合的全部内容
如果你是误写了字段,实际需要渲染整个属性集合的内容,把map的调用目标替换为属性集合对应的数组字段即可(从常见的GraphQL返回结构看,你大概率是要调用object.attributeCollection.edges.map,你可以对照控制台的结构调整为实际的数组字段名)。
方案3:兼容不同返回格式
如果接口返回可能存在单条/多条的兼容问题,可以加类型判断和兜底逻辑避免报错:
<StyledRow> {Array.isArray(object?.attributeCollection?.first) ? object.attributeCollection.first.map((attribute) => ( <LabelAssistant key={attribute.id} attribute={attribute} /> )) : object?.attributeCollection?.first ? <LabelAssistant attribute={object.attributeCollection.first} /> : null } </StyledRow>
注意:使用
map渲染列表时需要给子项加唯一key属性,避免React抛出列表渲染警告。
内容的提问来源于stack exchange,提问作者cts
相关产品推荐
相关产品推荐

