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

React组件通过Props传递图片路径失败问题咨询

解决React组件中图片props传递后不显示的问题

问题核心

React中直接使用相对字符串路径作为img的src属性时,Webpack无法正确解析路径映射,导致图片加载失败。你当前的路径是相对于Specials.js的,但组件渲染时路径会被解析为相对于最终构建后的HTML文件,自然找不到资源。

可行解决方案

方案1:通过import导入图片(推荐)

在Specials组件中先导入图片资源,再将导入后的对象传递给Card组件:

import Card from "./Card"
// 提前导入所有图片
import bruchettaImg from '../icons-assets/bruchetta.svg';
import greekSaladImg from '../icons_assets/greek salad.jpg';
import lemonDessertImg from '../icons_assets/lemon dessert.jpg';

function Specials() {
    const specials = [
        {
            img: bruchettaImg,
            foodItem: 'Bruchetta' ,
            description: 'Lorem, ipsum dolor sit amet consectetur adipisicing elit. Culpa quis illo at expedita ipsam accusamus, amet libero sit labore quo.',
            price: '$15'
        },
        {
            img: greekSaladImg,
            foodItem: 'Greek Salad' ,
            description: 'Lorem, ipsum dolor sit amet consectetur adipisicing elit. Culpa quis illo at expedita ipsam accusamus, amet libero sit labore quo.',
            price: '$17.8'
        },
        {
            img: lemonDessertImg,
            foodItem: 'Lemon Desert' ,
            description: 'Lorem, ipsum dolor sit amet consectetur adipisicing elit. Culpa quis illo at expedita ipsam accusamus, amet libero sit labore quo.',
            price: '$18.9'
        },
    ]
  return (
    <div className='specials'>
        <div className="special-heading">
            <h1>Specials</h1>
            <button className='btn'>Online Menu</button>
        </div>
        <div className="card-container">
        {specials.map((item,index) => {
            return <Card key={index} image={item.img} foodItem={item.foodItem} description={item.description} price={item.price} />
        }) }
        </div>
    </div>
  )
}

export default Specials

Card组件保持原代码即可:

function Card(props) {
  return (
    <>
        <div className="card-content">
            <img src={props.image} alt='picture'/>
            <div className="item-headings" >
                <h3>{props.foodItem}</h3>
                <h4>{props.price}</h4>
            </div>
            <p>{props.description}</p>
        </div>
    </>
  )
}

export default Card

方案2:利用public目录引用

将图片放到项目根目录的public文件夹下(比如public/icons-assets/),直接使用绝对路径:

修改specials数组的路径:

const specials = [
    {
        img: '/icons-assets/bruchetta.svg',
        // 其他属性不变
    },
    {
        img: '/icons_assets/greek salad.jpg',
        // 其他属性不变
    },
    {
        img: '/icons_assets/lemon dessert.jpg',
        // 其他属性不变
    },
]

这种方式无需导入,直接通过绝对路径指向public目录下的资源。

额外注意事项

  • 检查路径拼写:你第一个图片路径用了icons-assets(连字符),后两个是icons_assets(下划线),确认实际文件夹名称是否一致,避免拼写错误导致资源找不到。
  • 避免用index作为key:如果数组元素可能重新排序,建议给每个item添加唯一id字段,或者用foodItem作为key,防止渲染异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:13:10