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

ReactJS 嵌套map迭代器无内容输出,嵌套循环返回JSX有什么注意事项?

你的代码核心问题是外层map的回调函数没有返回内层map生成的JSX数组,外层map遍历后得到的全是undefined,因此没有内容渲染到DOM中。

嵌套循环返回JSX的注意事项

  • 每一层map的回调函数都必须显式返回生成的JSX内容:如果回调函数使用带大括号的函数体写法,必须手动添加return语句;如果使用不带大括号的隐式返回写法可以省略return,注意写法合规即可。
  • 嵌套map返回的是二维JSX数组,React可以直接渲染该结构,不需要额外包裹节点,如果不希望生成多余的DOM容器,也可以用Fragment包裹内层内容。
  • 每一层遍历的JSX根节点都需要设置唯一的key属性,目前你只给内层<IonItem>设置了key,若外层存在多个message遍历项,也需要给外层对应的根节点添加唯一key,避免渲染异常。
  • 注意补全空值判断逻辑:你目前只判断了chatList不为undefined,建议补充判断chatList.data、chatList.data[0]、chatList.data[0][0]、chatList.data[0][1]都存在,避免数组下标访问时报错。

修正后的代码示例

{  chatList !== undefined && chatList.data?.[0]?.[0]?.map((message, messageIndex) => {
    // last message stuff
    // 此处添加return,把内层map生成的JSX数组返回给外层map
    return chatList.data[0][1].map((participant, participantIndex) => {
        return <IonItem key={participantIndex}>
            <IonAvatar slot="start">
                {/*<img src={}/>*/}
            </IonAvatar>
            <IonLabel>
                <h2>{participant.identity}</h2>
                <p>{message.body}</p>
                <p>{moment(message.dateCreated).format('MM/DD/YY HH:mm')}</p>
            </IonLabel>
        </IonItem>
    })
})}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:24:06