首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React本机SVG正在使用不支持的JSX命名空间标记。如何将throwIfNamespace设置为false?

问React本机SVG正在使用不支持的JSX命名空间标记。如何将throwIfNamespace设置为false?
EN

Stack Overflow用户
提问于 2020-08-04 09:56:19
回答 3查看 2.4K关注 0票数 2

我正在尝试使用kristerkari/react本机-svg-变压器,但运行地铁后会出现以下错误:

代码语言:javascript
复制
error: assets/menu.svg: /user/Projects/mobile/assets/menu.svg: Namespace tags are not supported by default. React's JSX doesn't support namespace tags. You can set `throwIfNamespace: false` to bypass this warning.
  2 | import Svg, { Path } from "react-native-svg";
  3 | 
> 4 | const SvgComponent = props => <Svg overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width={24} height={24} {...props}><Path xmlns:default="http://www.w3.org/2000/svg" d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" vectorEffect="non-scaling-stroke" fill="#949494" /></Svg>;
    |                                                                                                                                              ^^^^^^^^^^^^^
  5 | 
  6 | export default SvgComponent;

我按照指示行事。我使用的是React 16.13.1和RN 0.63.2。我试图在babel.config.js中设置这样的标志:

代码语言:javascript
复制
module.exports = {
  presets: [
    'module:metro-react-native-babel-preset',
    { throwIfNamespace: false },
  ],
};

但这不管用。是否知道如何绕过警告,或者可以通过其他方式导入SVG文件而无需运行时转换?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-04 10:05:51

我在过去也遇到过同样的问题,不确定它是否是正确的解决方案,但是删除svg文件中的xmlns对我有效。

票数 2
EN

Stack Overflow用户

发布于 2020-08-04 11:27:13

您可以使用路径Svg由相同的包白化变压器svg,但您必须链接到反应本机。

代码语言:javascript
复制
react-native link react-native-svg-transformer
票数 0
EN

Stack Overflow用户

发布于 2022-08-01 07:55:11

错误是因为没有使用camel case标记。请注意,这里使用的是jsx (react)。因此,请进行以下更改。

  1. 将sketch:type转化为sketchType
  2. 将xmlns:xlink转化为xmlnsXlink
  3. 将xlink:href转化为xlinkHref
  4. 将xmlns:default转化为xmlnsDefault
  5. 并最终将所有css类转换为camelCase。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63244408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档