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

如何在Next.js的next/image组件中使用键值对里的图片地址?

解决Next.js中通过数组引用图片的问题

你的核心问题是数组里的image字段存的是字符串"bpstar",但Next.js的Image组件需要的是导入后的图片模块(也就是你直接写src={bpstar}时的资源值)。下面提供两种可行的解决方式:

方法1:直接在数组中使用导入的图片变量

这是最直接的方案,把数组里的字符串替换成实际导入的图片变量即可:

import Image from 'next/image'
import bpstar from '../images/logos/bpstar.png'

const faqs = [
  [
    {
      status: 'working on it',
      image: bpstar // 这里用导入的变量,而非字符串
    }
  ]
]

// 渲染逻辑保持不变
{faqs.map((column, columnIndex) => (
  <li key={columnIndex}>
    <ul role="list" className="space-y-10">
      {column.map((faq, faqIndex) => (
        <li key={faqIndex}>
          {faq.image && (
            <Image
              src={faq.image}
              alt="_"
              width={80}
              height={80}
            />
          )}
        </li>
      ))}
    </ul>
  </li>
))}

方法2:用映射对象关联字符串与图片变量

如果必须用字符串作为图片标识(比如数据来自外部接口或配置文件),可以创建一个映射对象,把字符串键和对应的图片变量绑定:

import Image from 'next/image'
import bpstar from '../images/logos/bpstar.png'

// 创建图片映射表
const imageMap = {
  bpstar: bpstar
}

const faqs = [
  [
    {
      status: 'working on it',
      image: "bpstar" // 这里保留字符串键
    }
  ]
]

// 渲染时通过映射表获取图片资源
{faqs.map((column, columnIndex) => (
  <li key={columnIndex}>
    <ul role="list" className="space-y-10">
      {column.map((faq, faqIndex) => (
        <li key={faqIndex}>
          {faq.image && imageMap[faq.image] && (
            <Image
              src={imageMap[faq.image]}
              alt="_"
              width={80}
              height={80}
            />
          )}
        </li>
      ))}
    </ul>
  </li>
))}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:32:55