为什么Figma导出的SVG在React里显示时路径错乱?
我从Figma导出的SVG图标在React项目里显示时路径全乱了,明明在设计软件里是正常的。我直接用createFromIconfontCN引入的,调整过width和height也不管用,是不是viewBox没处理好?
import { Icon } from '@icon-park/react';
import '@icon-park/react/styles/index.css';
function Logo() {
return (
<Icon
icon={require('./logo.svg')}
theme="primary"
size="32"
style={{ width: '50px', height: '50px' }}
/>
);
}
试过用img标签直接引用也没解决,SVG文件本身也没发现明显错误。难道是Figma导出设置有问题?
transform或者viewBox没处理干净。Figma导出的SVG通常会带一堆没必要的属性,比如
transform、fill的硬编码颜色,或者嵌套的g标签。这些都会干扰React渲染。建议你先用工具(比如SVGOMG)清理一下SVG代码,去掉无用的属性和嵌套结构。另外,你现在的写法
require('./logo.svg')可能会导致Webpack处理SVG时出问题。推荐直接把SVG内容复制到组件里,像这样:记得检查
viewBox属性,这个很关键。如果viewBox缺失或者值不对,SVG渲染肯定乱套。你可以在清理后的SVG文件里找到正确的viewBox值,然后手动加上。还有一点,Figma导出时默认可能会把画布偏移量也带上,导致SVG的坐标系偏移。导出前最好把图标挪到画布原点,再试试导出。
如果还是不行,可以试试用
dangerouslySetInnerHTML直接插入SVG字符串,虽然名字听着吓人,但确实是处理复杂SVG的一个办法:总之,清理SVG代码、调整
viewBox、优化导出设置,基本就能搞定。这活儿挺烦人的,但习惯了就还好。