当前位置: 首页 > 知识库问答 >
问题:

如何在反应原生上显示SVG文件?

谢夜洛
2023-03-14

我想显示svg文件(我有一堆svg图像),但我找不到显示方式。我试图使用图像和使用 react-native-svg 的组件,但它们不起作用。我试图用原生方式做到这一点,但只显示svg图像真的很辛苦。

示例代码:

import Svg, {
  Use,
  Image,
} from 'react-native-svg';

<View>
  <Svg width="80" height="80">
     <Image href={require('./svg/1f604.svg')} />
  </SvgRn>
</View>

另外,我知道反应原生基本上不支持svg,但我认为有人用棘手的方式解决了这个问题(有/没有反应原生-svg)

共有3个答案

凌展
2023-03-14

安装react native svg变压器

npm i react-native-svg-transformer --save-dev

我使用SVG如下,它工作正常

import LOGOSVG from "assets/svg/logo.svg"

渲染中

<View>
  <LOGOSVG 
    width="100%"
    height="70%"
  />
</View>
田博超
2023-03-14

我在这里发布了另一个解决方案(react-native-vate-icons)。这种方法使用矢量字体(来自SVG)而不是SVG文件。PS: react-native-vate-icons是在react-native-icons中处理SVG的最佳方法,它也适用于iOS和android。您将能够更改矢量图标的颜色和大小。

如果你想将svg直接插入你的应用程序,你可以尝试第三方库:react native svg。github拥有超过3k颗恒星,这是最好的方法之一。

使用 npm 安装其中任何一个:

  • 反应原生svg
  • 反应本机svg uri

然后使用将它链接到本机

react-native link react-native-svg

一个具有反应原生的例子

import * as React from 'react';
import SvgUri from 'react-native-svg-uri'; // SVG Package
import testSvg from './test.svg';          // SVG File

export default () => (
  <SvgUri
    width="200"
    height="200"
    svgXmlData={testSvg}
  />
);
毋炳
2023-03-14

我使用了以下解决方案:

  1. 使用https://svg2jsx.herokuapp.com/将. svg图像转换为JSX
  2. 使用https://react-svgr.com/playground/?native=true将JSX转换为react-native-svg组件(确保选中React Native复选框)
 类似资料:
  • 我想在我的android react本机应用程序的图像标签中通过URL显示一个简单的gif,但当我启动它时,不会显示任何图像。文档中提供的代码仅适用于iOS,不适用于android: 这里有一个类似的问题,但正如前面所说,这只适用于iOS:如何在React Native中显示动画gif 关于此提交,它应该可以工作:https://github.com/facebook/react-native/c

  • 问题内容: 我已经看到了很多用于svg on react的库,但是没有一个给我如何在react组件中导入.svg的代码,我已经看到了谈论将svg代码带入反应而不是使用.svg图标作为图像进行显示的代码。在用户界面中。 请告诉我是否有嵌入图标的方法。 问题答案: 如果图像是远程托管的,则可以直接将扩展名与标记一起使用。 这是小提琴:http : //codepen.io/srinivasdamam-

  • 我试图设置与React Native在Android上。做了一些研究,看起来我应该使用Interceptor。我找到的一个例子解释了如何做到这一点(链接),但我不确定如何注册拦截器。 因此,为了设置,我使用这个类: 那么剩下的就是注册上面的拦截器,那么它应该在哪里完成呢?可能在? 我在构建应用程序时没有收到任何错误,因此我认为应该很好-只需要让应用程序使用它。 更新:我当前正在尝试在中注册拦截器,

  • 我正在尝试生成我的第一个.apk,并且在过去几天中遇到了错误。我在stack overflow和github上搜索ans,但没有任何帮助 根据这里的说明,我可以构建调试版本,但是当运行<code>gradlew assembleerelease</code>时,我会出错 E:\p1\placementScript\android\app\build\intermediates\res\merged

  • 我试图将我的文本放在可用区域内,我的约束是这样的: 文本不应溢出, 文本必须在所有可用视图内放大, 单词不应拆分为字符,可以转到下一行句子, 当我在父视图中使用flex时,文本在水平方向上的视图扩展不能超过屏幕宽度 下面是我的代码片段: 结果是: 我努力实现我的目标: 我认为这与自定义字体有关

  • 错误是: 错误:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记了从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。 在App.js:22检查你的代码。在应用程序中(由ExpoRoot创建)在ExpoRoot中(位于renderApplication.js:45)在RCTView中(位于View.js:34)在视图中(位于AppConta