使用驼峰命名法。 试试 这段代码。由于这个 xmlns:xlink 语法反应不知道如何编译这个。
<svg id="SvgjsSvg3254" width="318" height="152" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlnsXlink="http://www.w3.org/1999/xlink" xmlnsSvgjs="http://svgjs.dev/svgjs" class="apexcharts-svg" xmlnsData="ApexChartsNS" transform="translate(0, 0)" style="background: transparent none repeat scroll 0% 0%;">
throwIfNamespace
是 @babel/preset-react
的一个选项,或者更具体地说,@babel/plugin-transform-react-jsx
。有关将 throwIfNamespace
设置为 false 的示例配置文件以及有关该选项的更多信息,请参阅 babeljs 站点上的此页面。
为方便起见,这里使用以下文件作为示例:
index.js
<element ns:attr />
.babelrc 带有默认的 throwIfNamespace (true)
{
"plugins": [
[
"@babel/plugin-transform-react-jsx"
]
]
}
产量与您看到的相似:
$ npx babel index.js
SyntaxError: /tmp/throw-if-namespace/index.js: Namespace tags are not supported by default. React's JSX doesn't support namespace tags. You can set `throwIfNamespace: false` to bypass this warning.
> 1 | <element ns:attr />
.babelrc throwIfNamespace 设置为 false
{
"plugins": [
[
"@babel/plugin-transform-react-jsx", {
"throwIfNamespace": false
}
]
]
}
没有错误
$ npx babel index.js
/*#__PURE__*/
React.createElement("element", {
"ns:attr": true
});
正确使用属性:
代替
class
写className
在
style
中使用骆驼符号
并在括号中添加样式
className={`name`}
style={{
stroke: "none",
strokeWidth: 4,
strokeDasharray: "none",
strokeLinecap: "butt",
strokeLinejoin: "miter",
strokeMiterlimit: 10,
fill: "#99CC33",
fillRule: "nonzero",
opacity: 1,
}}
正如最佳答案所建议的那样,您需要将 svg 转换为 jsx 格式。
为此,您可以使用这两个工具。
https://svg2jsx.com/(将 svg 转换为 react 组件)
https://www.svgminify.com/(将 svg 转换为 jsx 格式)