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

React Vite中如何直接展示API返回的含内部HTTP请求的SVG?

问题描述

我从API获取了一个动态SVG,该SVG内部包含多个HTTP请求,无法通过<img src={svg} />标签展示。我使用React Vite及Vite的SVGR插件,将SVG数据存为本地ticket.svg文件时,可通过React组件正常展示,但我希望无需存为文件,直接在JSX中展示state中存储的ticketSvg。

当前可运行代码(本地SVG组件)

import { ReactComponent as Ticket } from "./../../assets/ticket.svg";

const TicketDetail = () => {
      const [ticketSvg, setTicketSvg] = useState();
    
      const getTicketSVG = () => {
        // ...fetching SVG here
    
        setTicketSvg(svg); // looks something like <svg> ...svgData here..</svg>
      };
    
      return (
        <header className={styles.header}>
          // display svg here
          <Ticket />
        </header>
      );
    };

尝试过的无效方案

  • 使用<img src={svg} />时出现404错误:

ERROR: GET http://localhost:5174/ticket-detail/.....[HTTP/1.1 404 Not Found 1ms]

  • 使用数据URL方式仅能展示SVG框架,内部依赖API加载的二维码和logo无法显示:
<img src={`data:image/svg+xml;utf8,${encodeURIComponent(ticketSvg)}`} />

已查阅但未解决问题的资源

  • Turning an SVG string into an image in a React component
  • How to dynamically import SVG and render it inline
  • Unable to import SVG with Vite as ReactComponent

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:55:02