语法错误:未知:默认情况下不支持命名空间标签

Jes*_*sus 28 svg reactjs

尝试将 svg 作为 React 组件下载时出现以下错误。

语法错误:未知:默认情况下不支持命名空间标记。React 的 JSX 不支持命名空间标签。您可以打开“throwIfNamespace”标志来绕过此警告。

import React from "react";
import { ReactComponent as LO } from "../a/Logo.svg"
import { NavLink } from "react-router-dom";

const Logo = () => (
  <>
    <NavLink to={"/"}>
     <LO width={"40px"} height={"40px"} />
    </NavLink>
  </>
);

export default Logo;
Run Code Online (Sandbox Code Playgroud)

是什么原因 ?

Fra*_*wel 98

在 SVG 文件中,尝试更改:

sketch:type TO sketchType
xmlns:xlink TO  xmlnsXlink
xlink:href TO xlinkHref
Run Code Online (Sandbox Code Playgroud)

等等...

这个想法是创建camelCase 属性,请记住,您正在使用JSX,而不是像XML 那样创建字符串。

  • 那么...我们现在必须使用 JSX 友好的 SVG 吗?好像有点可笑... (35认同)
  • 我不明白需要重写 SVG 文件设置才能与 JSX 配合使用。我可以使用在 Python 中创建的 SVG 文件,通过 Django 在 html 中查看它们,然后在 Angular 中的 TypeScript 中查看相同的 SVG 文件。为什么 React 人员不能为此构建转换器? (2认同)

Tha*_*iya 15

最简单的解决方案是将 SVG 文件转换为 JSX。然后创建一个单独的组件或仅复制粘贴标签。这个网站完美地完成了这项工作。

https://svg2jsx.com/

  • 正如目前所写的,您的答案尚不清楚。请[编辑]添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (3认同)
  • 谢谢 tharusha,这是我的胜利答案![svgminify](https://www.svgminify.com) 没有解决根本问题:React 在命名空间中抛出了一个摇摆器。 (2认同)

Ahm*_*lih 13

因为我们在 JSX 操场上,所以你的 SVG 标签应该写成驼峰式

因此,您可以使用以下链接轻松优化 SVG 以避免此错误:)

svgminify

  • 该网站不会将标签转换为驼峰命名法。 (13认同)
  • 这个答案有帮助! (2认同)

cto*_*ife 5

这是一个很好的工具,可以将 SVG 转换为反应友好的组件,并包括对 typescript 的支持

https://react-svgr.com/playground/


nik*_*ikc 5

在我看来,我必须改变:

   xmlns:svg="http://www.w3.org/2000/svg"
Run Code Online (Sandbox Code Playgroud)

   xmlnsSvg="http://www.w3.org/2000/svg"
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。另一种选择是删除 xmlns:svg 属性及其值。 (2认同)