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

React中嵌套数组map渲染仅显标题,子项不渲染问题排查

嵌套Map渲染子项不显示的问题解决

问题重现

你有如下数据结构:

{
  title: "Category title",
  description: "Example description",
  lists: [
    {
      id: "popular",
      title: "Popular",
      items: [
        {
          id: 1,
          title: "title",
          provider: "provider",
          image: ""
        },
        // ...更多子项
      ]
    },
    {
      id: "new",
      title: "New",
      items: [
        {
          id: 4,
          title: "title4",
          provider: "provider",
          image: ""
        },
        // ...更多子项
      ]
    }
  ]
}

使用嵌套map渲染时,仅<h3>标题能显示,<h2>子项无法渲染,原代码如下:

return (
    <>
      {iconItems?.lists.map((icon, i) => {
        return (
          <>
            <h3 key={i}>{icon.title}</h3>
            {icon.items.map((i) => {
              <h2 key={i.id}>{i.title}</h2>;
            })}
          </>
        );
      })}
    </>
  );

问题原因

内层的icon.items.map回调函数里,你只是写了JSX元素,但没有返回它。当箭头函数使用花括号{}包裹代码时,必须显式用return返回值,否则map不会生成任何元素。

修正方案

有两种方式解决:

方式1:显式添加return

return (
    <>
      {iconItems?.lists.map((icon, i) => {
        return (
          <>
            <h3 key={i}>{icon.title}</h3>
            {icon.items.map((item) => {
              // 显式return JSX元素
              return <h2 key={item.id}>{item.title}</h2>;
            })}
          </>
        );
      })}
    </>
  );

方式2:使用箭头函数隐式返回(去掉花括号)

去掉内层map回调的花括号,让箭头函数自动返回JSX元素:

return (
    <>
      {iconItems?.lists.map((icon, i) => {
        return (
          <>
            <h3 key={i}>{icon.title}</h3>
            {icon.items.map((item) => (
              // 用圆括号包裹JSX,实现隐式返回
              <h2 key={item.id}>{item.title}</h2>
            ))}
          </>
        );
      })}
    </>
  );

另外建议把内层map的参数名从i改成item,避免和外层的索引变量i重名,提高代码可读性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:05:17