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

React组件在不同渲染场景下图片加载失败问题排查

React项目图片加载异常问题

问题描述

我正在开发一个任务分配React应用,这是我的第一个React项目。同一个包含图片的组件在任务列表页面能正常渲染图片,但在用户组件中使用时图片加载失败。图片存放在public文件夹,已添加对应CSS。

相关代码如下:

<div className="tasklist">
  <p>{props.task.task}</p>
  <small>{new Date(props.task.createdAt.toString()).toDateString()}</small>
  <br />
  <i>Assigned By :</i>
  <b>{props.task.assigned_by}</b>
  <br />
  <i>Assigned to :</i>
  <b>{props.task.assigned_to}</b>
  <br />
  <i>status :</i>
  <b>{props.task.status}</b>
  <button onClick={showUpdateFormhandler}>
    <img
      onError={()=>{console.log('error occured')}}
      src="edittask.png"
      alt="update"
      style={{ width: "20px", height: "20px" }}
    />
  </button>
</div>

问题原因

在React中,组件被不同路由/页面引用时,相对路径的解析基准会随当前页面路由变化。直接用"edittask.png"这种相对路径,若用户组件所在路由为/users,浏览器会请求/users/edittask.png,而非public文件夹根目录下的/edittask.png,导致图片找不到。

解决方法

方法一:使用根绝对路径

将图片src改为以斜杠开头的绝对路径,强制指向public文件夹根目录:

<img
  onError={()=>{console.log('error occured')}}
  src="/edittask.png"
  alt="update"
  style={{ width: "20px", height: "20px" }}
/>

方法二:通过环境变量拼接路径

使用process.env.PUBLIC_URL确保路径始终指向public文件夹(适用于部署到非根目录的场景):

<img
  onError={()=>{console.log('error occured')}}
  src={process.env.PUBLIC_URL + "/edittask.png"}
  alt="update"
  style={{ width: "20px", height: "20px" }}
/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:45:32