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

React项目中从对象数组映射渲染图片显示损坏的问题求助

React项目中从对象数组映射渲染图片显示损坏的问题求助

嗨,我看了你的代码,发现图片显示损坏的问题根源很明确——你数组里的图片路径写法不一致,而且直接用根相对路径在React项目里是有坑的!

先拆解下你的问题:在arrayForList数组里,第一个披萨图片是通过import pizzaImg from './images/Pizza-thick.png'引入的,这种写法会让Webpack正确处理图片资源,打包时生成正确的访问路径;但剩下的汉堡、饺子等图片,你直接写了src: '/images/Burger.png'这类路径,浏览器会把它当成域名根目录下的路径去查找,自然找不到本地src/images里的图片,所以显示损坏。

给你两个简单的解决办法,选一个就行:

方法一:统一用import引入所有图片

把所有图片都像披萨那样先import进来,再放到数组里,这是React项目处理本地图片的标准方式:

import pizzaImg from './images/Pizza-thick.png';
import burgerImg from './images/Burger.png';
import momoImg from './images/Momo-food.png';
import hotdogImg from './images/Hotdog.png';
import chickenBurgerImg from './images/Chicken-Burger.png';
import setFoodImg from './images/Set-of-food.jpeg';

export const arrayForList = [
  {   
    name: "Pizza",
    src: pizzaImg,
    id: 1,
    price: 5,
  },
  {  
    name: "Burger",
    src: burgerImg,
    id: 2,
    price: 5,
  },
  {  
    name: "Momo",
    src: momoImg,
    id: 3,
    price: 5,
  },
  {  
    name: "Hotdog",
    src: hotdogImg,
    id: 4,
    price: 5,
  },
  {  
    name: "Chicken-Burger",
    src: chickenBurgerImg,
    id: 5,
    price: 5,
  },
  {  
    name: "Chicken-Pizza",
    src: pizzaImg,
    id: 6,
    price: 5,
  },
  {  
    name: "Dominos",
    src: pizzaImg,
    id: 7,
    price: 5,
  },
  {  
    name: "McDonald Special",
    src: setFoodImg,
    id: 8,
    price: 5,
  }
]

Webpack会在打包时把这些图片复制到输出目录,并自动生成正确的访问URL。

方法二:用require()动态加载图片

如果不想一个个手动import,也可以在数组里用require()来动态获取图片路径,注意路径要写成相对于当前文件的相对路径(./images/xxx),而不是根路径:

export const arrayForList = [
  {   
    name: "Pizza",
    src: require('./images/Pizza-thick.png'),
    id: 1,
    price: 5,
  },
  {  
    name: "Burger",
    src: require('./images/Burger.png'),
    id: 2,
    price: 5,
  },
  {  
    name: "Momo",
    src: require('./images/Momo-food.png'),
    id: 3,
    price: 5,
  },
  // 剩下的对象依次替换成这种require写法即可
]

另外再检查两个细节:

  • 确认images文件夹确实在src目录下,文件名和扩展名没有写错(比如.jpeg和.jpg不要搞混,Linux/macOS环境下文件名大小写是敏感的);
  • 你提到的计数器功能没关系,先把图片问题解决,之后再拆分组件也完全来得及~

备注:内容来源于stack exchange,提问作者VXVNII

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:19:37