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

React中如何将本地图片URL作为prop传递给组件实现图片展示

解决方案

你需要修正两处问题,即可实现图片正常加载:

1. 修复字段拼写错误

你当前projects数组中定义的描述字段为expect,但传递给ProjectCard组件时调用的是project.excerpt,字段名不统一会导致描述内容无法正常渲染,先将数组内的字段名统一修改为excerpt。
另外React列表渲染必须添加key属性,你需要在map遍历的外层容器上补充该属性。

2. 修正图片路径

根据你的项目结构,有两种常用的图片加载方案可选:

  • 方案一:资源存放在public目录(适合图片数量多的场景)
    把整个assets文件夹移动到项目的public目录下,React脚手架会直接识别public目录下的静态资源,projects数组内的图片路径直接写根路径即可:
    imageUrl: "/assets/free-stock-image-1.jpg"
    
  • 方案二:资源存放在src目录(适合图片数量少,需要打包优化的场景)
    如果要保留assets在src目录下,需要先在ProjectSection顶部导入所有图片,再将导入的变量赋值给imageUrl:
    // 顶部导入图片
    import img1 from "../assets/free-stock-image-1.jpg";
    import img2 from "../assets/free-stock-image-2.jpg";
    import img3 from "../assets/free-stock-image-3.jpg";
    
    // 数组内赋值
    const projects = [
      {
        title: "Project 1",
        imageUrl: img1,
        excerpt: "This is my project about...",
      }
      // 剩余两个项目同理配置
    ]
    

修正后的完整代码示例

import React from "react";
import ProjectCard from "./ProjectCard";
// 方案二需要打开下方注释
// import img1 from "../assets/free-stock-image-1.jpg";
// import img2 from "../assets/free-stock-image-2.jpg";
// import img3 from "../assets/free-stock-image-3.jpg";

function ProjectSection() {
  const projects = [
    {
      title: "Project 1",
      // 方案一路径,方案二替换为 imageUrl: img1
      imageUrl: "/assets/free-stock-image-1.jpg",
      excerpt: "This is my project about...",
    },
    {
      title: "Project 2",
      imageUrl: "/assets/free-stock-image-2.jpg",
      excerpt: "This is my project about...",
    },
    {
      title: "Project 3",
      imageUrl: "/assets/free-stock-image-3.jpg",
      excerpt: "This is my project about...",
    },
  ];
  return (
    <div className="container text-center my-5">
      <h1>
        My <span className="text-info">Projects</span>
      </h1>
      <div className="lead">I build products. Just like this website</div>
      <div className="row my-5 pt-3">
        {projects.map((project, index) => (
          <div className="col-12 col-md-4 py-2" key={index}>
            <ProjectCard
              title={project.title}
              excerpt={project.excerpt}
              imageUrl={project.imageUrl}
            />
          </div>
        ))}
      </div>
      <div className="my-5">
        <a href="/" className="text-dark text-right">
          <h5>
            See my projects
            <i className="fas fa-arrow-right align-middle"></i>
          </h5>
        </a>
      </div>
    </div>
  );
}

export default ProjectSection;

ProjectCard组件本身逻辑无需修改,只要传入的imageUrl路径正确,即可正常加载图片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:15:00