如何在 React 组件上放置未平面化的 svg 文件 [关闭]

Posted

技术标签:

【中文标题】如何在 React 组件上放置未平面化的 svg 文件 [关闭]【英文标题】:How to place svg file unflataned on React component [closed] 【发布时间】:2018-10-20 06:11:38 【问题描述】:

我正在尝试在 react 组件上嵌入 svg 文件,但它附加为扁平化。有什么办法可以将其发布为纯 svg。

请查看它的发布位置https://abk-react-portfolio.herokuapp.com/

以及它应该如何查看

https://abk-react-portfolio.herokuapp.com/static/media/wordcloud_ahmet.445abff9.svg

我是这样用的

从 '../assets/images/landing/wordcloud_ahmet.svg' 导入 WordCloud;

提前致谢。

【问题讨论】:

【参考方案1】:

好吧,你可以内联简单的 svg,但你必须将 svg 中的所有样式属性转换为 JSX 类型的样式属性,将类转换为类名。

这可以用于较小的 svg 文件

这里是代码笔示例Inline SVG,

    function SvgWithXlink (props) 
    return (
        <svg
            
            
            xmlns="http://www.w3.org/2000/svg"
            xmlnsXlink="http://www.w3.org/1999/xlink"
        >
            <style>
                 `.classA  fill:$props.fill ` 
            </style>
            <defs>
                <g id="Port">
                    <circle style=fill:'inherit' r="10"/>
                </g>
            </defs>

            <text y="15">black</text>
            <use x="70" y="10" xlinkHref="#Port" />
            <text y="35"> props.fill </text>
            <use x="70" y="30" xlinkHref="#Port" className="classA"/>
            <text y="55">blue</text>
            <use x="70" y="50" xlinkHref="#Port" style=fill:'blue'/>
        </svg>
    );



ReactDOM.render(<SvgWithXlink fill="violet" />, document.querySelector('body > div'));

有关更多信息,请参阅此问题embedding-svg-into-reactjs

由于你的svg文件很大,最好把它展平,

如果你通过展平导入它,将来编辑它也会更容易,如果你想改变一些东西,只需在任何 svg 编辑器中导入它。

但是,如果你把它转换成 JSX 样式,它就不能被导入到任何 SVG 编辑器中

【讨论】:

以上是关于如何在 React 组件上放置未平面化的 svg 文件 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 React JS 在 SVG 圆圈内放置文本?

如何使用 React 组件在 UI 中显示 svg 图标(.svg 文件)?

如何在 React Native 上显示 SVG 文件?

如何在 React、Next.js 中使用 tailwind.css 垂直和水平放置内容中心?

svg 图像未显示在 react.js 上

如何在 React 组件中导入图像(.svg、.png)