use*_*024 3 javascript svg typescript reactjs next.js
我将 SVG 作为可重用组件包含在我的 React 应用程序中。SVG组件示例如下
import React from 'react';
export default function IconComponent(): JSX.Element {
const svg = `
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M36.4811 26.4927H29.7345C26.5728 26.4927 23.9995 23.921 23.9978 20.761C23.9978 17.5977 26.5711 15.0243 29.7345 15.0227H36.4811C37.1711 15.0227 37.7311 15.5827 37.7311 16.2727C37.7311 16.9627 37.1711 17.5227 36.4811 17.5227H29.7345C27.9495 17.5243 26.4978 18.976 26.4978 20.7593C26.4978 22.541 27.9511 23.9927 29.7345 23.9927H36.4811C37.1711 23.9927 37.7311 24.5527 37.7311 25.2427C37.7311 25.9327 37.1711 26.4927 36.4811 26.4927Z" fill="#0C1727"/>
</svg> `;
return (
<span
className="icon icon-component"
dangerouslySetInnerHTML={{ __html: svg }}
/>
);
}
Run Code Online (Sandbox Code Playgroud)
在页面级别,我导入 IconComponent 并重用它。还有其他最好的方法在 React 页面中包含可重用的 SVG 来提高性能/页面加载吗?
sprites.svg您可以在公共文件夹中创建一个静态文件,并在symbol具有特定 id 的标签中定义您的 svg
<svg
display="none"
width="0"
height="0"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<defs>
<symbol viewBox="0 0 40 40" fill="none" id="your_icon_id">
<path fill-rule="evenodd" clip-rule="evenodd" d="M36.4811 26.4927H29.7345C26.5728 26.4927 23.9995 23.921 23.9978 20.761C23.9978 17.5977 26.5711 15.0243 29.7345 15.0227H36.4811C37.1711 15.0227 37.7311 15.5827 37.7311 16.2727C37.7311 16.9627 37.1711 17.5227 36.4811 17.5227H29.7345C27.9495 17.5243 26.4978 18.976 26.4978 20.7593C26.4978 22.541 27.9511 23.9927 29.7345 23.9927H36.4811C37.1711 23.9927 37.7311 24.5527 37.7311 25.2427C37.7311 25.9327 37.1711 26.4927 36.4811 26.4927Z" fill="#0C1727"/>
</symbol>
</defs>
</svg>
Run Code Online (Sandbox Code Playgroud)
你可以通过调用它的 id 来使用它
const SvgIcon = ({ name, className, ...props }) => (
<svg className={className} {...props}>
<use xlinkHref={`/static/images/sprites.svg#${name}`} />
</svg>
);
<SvgIcon name="your_icon_id" width={40} height={40}/>
Run Code Online (Sandbox Code Playgroud)
通过这种方式,你的包 javascript 大小将会减小,因为它没有 svg 代码
P/s: 您可以使用svgo来优化 SVG sprites 文件
| 归档时间: |
|
| 查看次数: |
2290 次 |
| 最近记录: |