gpt4 book ai didi

javascript - 将 SVG 组件作为背景图像 react 到 div

转载 作者:搜寻专家 更新时间:2023-11-01 05:19:41 24 4
gpt4 key购买 nike

我试图让 styled-components 获取一个作为 react 组件的 SVG 并将其设置为背景图像,但我收到错误:

TypeError: Cannot convert a Symbol value to a string

SVG组件代码:

import React from "react";

const testSVG = props => {
return (
<svg version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 193.3 129.7">
<g>
<g>
<g>
<path
fill="#434343"
class="st0"
d="M162.4,116c-4.6,7.5-15.6,13.6-24.4,13.6H16c-8.8,0-12.3-6.2-7.7-13.7c0,0,4.6-7.7,11.1-18.4
c4.4-7.4,8.9-14.7,13.3-22.1c1.1-1.8,6.1-7.7,6.1-10.1c0-7.3-15-24.9-18.5-30.7C13.5,23.6,8.3,14.9,8.3,14.9
C3.7,7.4,7.2,1.2,16,1.2c0,0,65.9,0,106.8,0c10,0,25.9-4.5,33.5,3.8c8.7,9.3,15.5,25.4,22.5,36.8c2.6,4.2,14.5,18.3,14.5,23.8
c-0.1,7.6-16,26.1-19.6,32C167.1,108.3,162.4,116,162.4,116z"
/>
</g>
</g>
</g>
</svg>
);
};

export default testSVG;

容器组件代码:

import React, { Component } from "react";
import StepSVG from "../../components/UI/SVGs/Test";

class StepBar extends Component {
render() {
const { steps } = this.props;

return (
<div>
{steps
? steps.map(step => {
return (
<Wrap key={step._id} bg={StepSVG}>
<P>
{" "}
<Link to={"/step/" + step._id}>{step.title} </Link>
</P>
</Wrap>
);
})
: null}
</div>
);
}
}

export default StepBar;

const Wrap = styled.div`
padding: 30px 30px 0 0;
display: inline-block;
background-image: url(${props => props.bg});
`;

我正在使用开箱即用的 create-react-app。

我也尝试过不使用带样式的组件并使用内联样式但没有成功。

是否可以在这种情况下将 SVG 用作背景图像并将 SVG 作为组件?

最佳答案

对于 React SVG 背景图片,我发现这个效果最好:

// MyComponent.js

import mySvg from './mySvg.svg';

...

function MyComponent() {
return (
<div
className="someClassName"
style={{ backgroundImage: `url(${mySvg})` }}
>

... etc

当 webpack 打包时,SVG 文件的路径会改变,所以通过使用模板字符串你可以保持联系。

在 CSS 类中,您可以做任何您喜欢的样式。

关于javascript - 将 SVG 组件作为背景图像 react 到 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51244463/

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