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

Styled Components传递图片Props时图片不显示问题排查

图片无法渲染的问题排查与修复

问题根源

你的代码里有两个关键错误导致图片不显示:

  • props访问逻辑错误:你在styled-components的样式回调里把参数命名为NoBillsLaptopPNG,然后试图取它的.src,但实际上你传给组件的NoBillsLaptopPNG已经是图片的src字符串(你传的是NoBillsLaptopPNG.src),不是原始导入对象。
  • src属性赋值错误:基于上面的错误,你相当于在访问一个字符串的.src属性,结果肯定是undefined,自然加载不出图片。

修正后的代码方案

方案一:保留props传参的方式(适合后续响应式切换)

import NoBillsMobilePNG from "../../public/assets/quotes/no-bills-mobile.png"
import NoBillsLaptopPNG from "../../public/assets/quotes/no-bills-laptop.png"

export const NoBillsSummary = () => {
  return <div>
    <TestImg
      mobileSrc={NoBillsMobilePNG.src}
      laptopSrc={NoBillsLaptopPNG.src}
    />         
  </div>;
};

const TestImg = styled.img<{
  mobileSrc: string;
  laptopSrc: string;
}>`
  // 直接使用传入的laptop端图片地址
  src: url(${props => props.laptopSrc});

  width : 126.07px;
  height : 107.59px;
  margin-top: 2px;

  // 后续添加响应式切换逻辑示例
  @media (max-width: 768px) {
    src: url(${props => props.mobileSrc});
  }
`;

方案二:更常规的img标签用法(代码更简洁)

如果不需要通过props动态控制,直接给img标签传src属性,用styled-components处理样式即可:

import NoBillsMobilePNG from "../../public/assets/quotes/no-bills-mobile.png"
import NoBillsLaptopPNG from "../../public/assets/quotes/no-bills-laptop.png"

export const NoBillsSummary = () => {
  return <div>
    <TestImg src={NoBillsLaptopPNG.src} alt="无账单摘要" />         
  </div>;
};

const TestImg = styled.img`
  width : 126.07px;
  height : 107.59px;
  margin-top: 2px;

  // 响应式切换图片的写法
  @media (max-width: 768px) {
    content: url(${NoBillsMobilePNG.src});
  }
`;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:15:38