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

React如何将对象数组内img的src通过props传递给子组件并正常展示

问题原因及解决方法

1. 首要错误:props属性名不匹配

你在父组件Galleries中给子组件Gallery传递图片路径的属性名是galery,但子组件内部读取的是props.src,二者名称不一致,导致图片路径读取为undefined,自然无法加载图片。

修复方式二选一:

  • 父组件修改传参属性名:把<Gallery name={gallery.name} galery={gallery.src} />改成<Gallery name={gallery.name} src={gallery.src} />
  • 或者子组件修改取值逻辑:把<img src={props.src} ... />改成<img src={props.galery} ... />

2. 本地图片路径引用错误

就算属性名修正后,你直接写的字符串形式相对路径../../Images/xxx.jpg也无法正常加载:React 打包编译时会处理静态资源的路径,直接写字符串相对路径不会被webpack识别处理,打包后实际路径和开发时的路径不匹配,会出现404错误。

两种修复方案:

方案1:提前导入本地图片

在Galleries组件顶部导入需要的图片,把导入结果作为src的值:

import React from 'react';
import Gallery from '../Gallery/Gallery';
// 导入图片
import img1 from '../../Images/photographer-gfc1c015b1_1920.jpg'

const Galleries = (props) => {
  const galleries = [
    {
      name: 'natur',
      src: img1,
    },
    {
      name: 'moutain',
      src: img1,
    },
  ];
  return (
    <div>
      <h1>I have {galleries.length} Images</h1>
      {galleries.map((gallery, index) => (
        // 遍历列表加唯一key属性,避免控制台警告
        <Gallery key={index} name={gallery.name} src={gallery.src} />
      ))}
    </div>
  );
};

export default Galleries;

子组件保持原有逻辑即可:

import React from 'react';

const Gallery = (props) => {
  return (
    <div>
      <h1>{props.name}</h1>
      <img src={props.src} alt="" style={{ height: '200px', width: '300px' }} />
    </div>
  );
};

export default Gallery;

方案2:把图片放到public目录下

将Images文件夹移动到项目根目录的public文件夹中,直接用绝对路径引用即可:

const galleries = [
  {
    name: 'natur',
    src: '/Images/photographer-gfc1c015b1_1920.jpg',
  },
  {
    name: 'moutain',
    src: '/Images/photographer-gfc1c015b1_1920.jpg',
  },
];

这种方式不需要导入图片,webpack打包时会直接把public下的资源原样复制到打包产物根目录,路径可以直接匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:54:01