React Native 和 Expo - SVG 不会在 iOS 设备上呈现

Posted

技术标签:

【中文标题】React Native 和 Expo - SVG 不会在 iOS 设备上呈现【英文标题】:React Native & Expo - SVG won't render on iOS device 【发布时间】:2017-10-04 09:18:49 【问题描述】:

我已经使用“create-react-native-app”启动了一个项目,但我不知道如何渲染 .svg 文件。我尝试了 all 用于 svg 的库,例如 react-native-svg-uri、react-native-svg-image、msvgc(将 .svg 转换为使用 react-native-svg 反应组件),但这些都没有帮助. 有时,当我在手机上运行应用程序预览(带有 expo)时,它会立即崩溃,有时它只显示加载动画 - 而不是显示实际的 .svg 图像。 没有错误 - 它根本不会呈现 svgs。

例如,这段代码显示加载动画

import SVGImage from 'react-native-svg-image';

<View style=styles.slide1>

       <SVGImage
        style= width: 80, height: 80 
        source=uri:'https://fluent-panda.appspot.com.storage.googleapis.com/dumbbell.svg'
        />

       <Text style=styles.text>Hello</Text>
 </View>

提前谢谢你!

【问题讨论】:

【参考方案1】:

这似乎是未在 ios 上测试的 react-native-svg-image 库的问题。当你在 iOS 上的 WebView 上使用 html 属性时,你不能设置 startInLoadingState=true,否则加载指示器永远不会消失。这是一种在 react-native 中已经存在很长时间的行为,有关更多信息,请参阅 issue 542 ——虽然它肯定不理想,希望有人阅读并修复它!

您可以通过在组件上将 showWebviewLoader 属性设置为 false 来解决此问题。

    <SVGImage
      showWebviewLoader=false
      style= width: 80, height: 80 
      source=uri:'https://fluent-panda.appspot.com.storage.googleapis.com/dumbbell.svg'
    />

【讨论】:

以上是关于React Native 和 Expo - SVG 不会在 iOS 设备上呈现的主要内容,如果未能解决你的问题,请参考以下文章

expo install react-native-svg“错误运行此命令会将依赖项添加到工作区根目录而不是工作区本身......”

(react-native-svg 错误)“试图注册两个同名的视图 RNSVGRect”

React-native refs 和 Expo Camera

React-Native 和 Expo:create-react-native-app 和 react-native init 之间的区别

react-native-permissions 和 expo-permissions 之间是不是有任何权衡?

使用 Expo 在 react-native 上共享图像和文件