Pri*_*abu 9 svg reactjs react-native
我正在运行这个程序来显示 SVG 图像
import React, { Component } from 'react';
import { View } from 'react-native';
import Expo from './assets/check-mark.svg';
import SVG from 'react-native-svg';
export default class MyApp extends Component {
render(){
return (
<View style={{backgroundColor:"black"}}>
<Expo width={20}
height={15} />
</View>
);
}
}
Run Code Online (Sandbox Code Playgroud)
并遇到了这个错误Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: number.
我该如何解决这个问题?或者还有其他更好的方法来使用 React Native 的 SVG 图像吗?
buz*_*tto 12
对于 svg 文件,react-native-svg建议使用react-native-svg-transformer。
安装包:
yarn add --dev react-native-svg-transformer
Run Code Online (Sandbox Code Playgroud)
将配置添加到metro.config.js:
const { getDefaultConfig } = require('metro-config');
module.exports = (async () => {
const {
resolver: { sourceExts, assetExts },
} = await getDefaultConfig();
return {
transformer: {
babelTransformerPath: require.resolve('react-native-svg-transformer'),
},
resolver: {
assetExts: assetExts.filter(ext => ext !== 'svg'),
sourceExts: [...sourceExts, 'svg'],
},
};
})();
Run Code Online (Sandbox Code Playgroud)
这样你就应该能够渲染你的 SVG 文件了。
metro.config.js文件
const {getDefaultConfig} = require('metro-config');
module.exports = (async () => {
const {
resolver: {sourceExts, assetExts},
} = await getDefaultConfig();
return {
transformer: {
babelTransformerPath: require.resolve('react-native-svg-transformer'),
},
resolver: {
assetExts: assetExts.filter((ext) => ext !== 'svg'),
sourceExts: [...sourceExts, 'svg'],
},
};
})();
Run Code Online (Sandbox Code Playgroud)
停止 Metro 捆绑程序或清除 Metro 捆绑程序缓存
使用再次重建应用程序yarn run ios
在react-native中显示SVG的最佳方法(据我所知,这是最好且简单的方法)是:
首先安装这个SVG包: npm i react-native-svg
第二,
PS:无需安装SVG变压器包
| 归档时间: |
|
| 查看次数: |
16212 次 |
| 最近记录: |