React Native 输出有什么不同
react-native-svg 为每个 SVG 元素提供了首字母大写的组件:<path> 变成 <Path>,<g> 变成 <G>,<linearGradient> 变成 <LinearGradient>。转换器会映射所有受支持的元素,只导入实际用到的组件,并把 props 类型设为 SvgProps。
没有原生对应组件的元素,例如 <title>、<desc>、<style> 或 <metadata>,会被删除并给出提示,避免组件在运行时崩溃。class 属性同样会被移除,因为 React Native 没有 CSS 类。
安装 react-native-svg
使用生成的组件:
- 安装依赖:Expo 项目运行 npx expo install react-native-svg,原生 React Native 项目运行 npm install react-native-svg。
- 把转换后的代码保存为项目中的 .tsx 或 .jsx 文件。
- 像普通组件一样渲染它,并传入 width、height 或 color 属性。
- 开启 currentColor 并传入 color 属性,就能由父组件控制图标颜色。
移动端图标小技巧
图标尽量保持简单:滤镜和遮罩在低端 Android 设备上渲染开销很大。把坐标取整到一到两位小数可以缩小 JavaScript 包体积;非常小的图标优先使用填充而不是描边,因为细描边在非高清屏上容易发虚。