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

React中如何为导入的图片使用动态名称?

动态生成图片名称并加载图片的解决方案

你之前的写法失效,是因为Image${item.id}只是生成了字符串"Image1001",而非你导入的对应图片资源变量——webpack打包时会把import Image1001 from '../images/1001.jpg'里的图片处理成实际资源路径,但纯字符串不会被解析为资源,所以src变成纯文本,自然加载失败。

下面是几种可行的实现方式:

方法1:手动建立图片映射对象

先逐个导入需要的图片,用对象关联ID与对应图片资源,之后通过ID直接取值:

// 导入目标图片
import Image1001 from '../images/1001.jpg';
import Image1002 from '../images/1002.jpg';

// 建立ID到图片的映射关系
const imageMap = {
  1001: Image1001,
  1002: Image1002
};

// 在map函数中使用
{itemList.map(item => (
  <img key={item.id} src={imageMap[item.id]} alt="" />
))}

方法2:用webpack的require.context批量导入图片

如果图片数量多,不想手动逐个导入,可借助webpack的require.context批量读取指定目录下的图片,自动生成映射:

// 创建图片上下文:指定图片目录、是否递归子目录、匹配jpg格式文件
const imageContext = require.context('../images', false, /\.jpg$/);

// 生成ID到图片资源的映射
const imageMap = {};
imageContext.keys().forEach(key => {
  // 从文件名提取ID,例如将'./1001.jpg'处理为'1001'
  const imageId = key.replace('./', '').replace('.jpg', '');
  imageMap[imageId] = imageContext(key);
});

// 在map函数中使用
{itemList.map(item => (
  <img key={item.id} src={imageMap[item.id]} alt="" />
))}

方法3:直接动态拼接路径(webpack环境适用)

通过require直接动态拼接图片路径,webpack会自动解析符合规则的动态路径:

// 在map函数中直接用require加载图片
{itemList.map(item => (
  <img key={item.id} src={require(`../images/${item.id}.jpg`)} alt="" />
))}

注意:使用这种方式时,webpack需要识别你的动态路径规则,尽量保持../images/为固定前缀,仅ID部分为动态内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:32:46