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

React嵌套JSON图片加载异常:图片生成独立Accordion问题

问题解决:让嵌套JSON的图片归属到对应Accordion面板

核心问题原因

你渲染时把图片的遍历逻辑放到了Accordion组件的外部层级,导致每张图片都被单独包裹成新的Accordion,而非作为对应面板内容的一部分。

修正后的JSX代码

把图片的遍历嵌套在对应Accordion的内容区域内,示例如下:

// 假设你的JSON数据存在data变量中
{data.map((panelItem) => (
  <Accordion key={panelItem.id}>
    <Accordion.Header>{panelItem.title}</Accordion.Header>
    <Accordion.Body>
      {/* 先渲染面板的文本内容 */}
      <p>{panelItem.description}</p>
      {/* 再渲染当前面板关联的图片组 */}
      <div className="panel-images">
        {panelItem.images.map((img) => (
          <img
            key={img.id}
            src={img.url}
            alt={img.alt || panelItem.title}
            style={{ maxWidth: '100%', margin: '8px 0' }}
          />
        ))}
      </div>
    </Accordion.Body>
  </Accordion>
))}

匹配的JSON结构要求

确保你的JSON中每个折叠面板项包含嵌套的images数组,示例结构:

[
  {
    "id": "panel-1",
    "title": "产品A介绍",
    "description": "这是产品A的详细说明内容",
    "images": [
      {
        "id": "img-a-1",
        "url": "/assets/product-a-1.jpg",
        "alt": "产品A外观"
      },
      {
        "id": "img-a-2",
        "url": "/assets/product-a-2.jpg",
        "alt": "产品A细节"
      }
    ]
  },
  {
    "id": "panel-2",
    "title": "产品B介绍",
    "description": "这是产品B的详细说明内容",
    "images": [
      {
        "id": "img-b-1",
        "url": "/assets/product-b-1.jpg",
        "alt": "产品B外观"
      }
    ]
  }
]

关键注意点

  • 必须给每个循环项(包括Accordion和图片)设置唯一的key属性,避免React渲染警告
  • 如果是本地图片资源,确保URL路径正确:public目录下的资源直接写相对路径,src目录下的资源需要用require()导入(比如src={require(img.url)})
  • 可以通过CSS类或内联样式控制图片的排版,避免图片溢出面板

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:52:43