gpt4 book ai didi

javascript - 如何在不发出 http 请求的情况下将文件中的 svg 图标显示为内联?

转载 作者:行者123 更新时间:2023-12-03 08:29:29 25 4
gpt4 key购买 nike

有一个 React 应用程序,要求在离线模式下在应用程序的某些部分显示图标。内联 svg 非常适合。

import React from 'react';

// inline svg used to show icons in offline mode
export default function InlineSvgBack(): React.ReactElement {
return <svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'>
<path d='M20 12H4M4 12L9 7M4 12L9 17' stroke='white' strokeWidth='1.2' strokeLinecap='round' strokeLinejoin='round'/>
</svg>;
}

在所有其他图标应用程序中使用下一个方法的问题

import iconBack from '../images/icon_back.svg'

// it handled by webpack file-loader
export default function IconBack() {
return <img src={iconBack} alt="icon back"/>
}

所以有一个带有 icon_back.svg 的目录 images ,目前我已将其内容复制到 InlineSvg 组件中,但是我担心如果smbd 会对 icon_back.svg 进行更改,他会想念我的 React 组件。

我当前的解决方案是删除icon_back.svg。但是,我想知道是否可以这样做

import React from 'react';
import svg from '../images/icon_back.svg'; // import a line of text

// inline svg used to show icons in offline mode
export default function InlineSvgBack(): React.ReactElement {
return <>{svg}</>; // output svg line of text
}

最佳答案

您可以使用 raw-loader 将 svg 获取为文本(正如您已经正确执行的那样)。之后,您可以获取文本并将其设置为节点的 html 内容,如下所示:

import iconBack from '../images/icon_back.svg'; // import with raw-loader

function Icon({svgImage}) {
return (
<div dangerouslySetInnerHTML={{__html: svgImage}}/>
);
}

function App() {
return (<Icon svgImage={iconBack}/>)
}

这应该在 div 标签内渲染您的 svg。或者,您也可以生成一个数据 url,并将其传递到 img 标记中。

关于javascript - 如何在不发出 http 请求的情况下将文件中的 svg 图标显示为内联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65563945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com