学习react-native组件 1 Image加载图片的组件。

哈喽哈喽,大家好。我是金樽清酒。最近也是刚刚开始学习react-native。说实话感觉react-native的学习成本还是相对来说比较高的。首先它是基于react的,对于没有接触过react的小伙伴来说先得学习一下react才能对react-native得心应手。不然你不知道什么是声明式也就写不好react-native。其次,为什么说学习成本有些高呢。它是用来开发原生ios和安卓的,所以你也需要了解一些安卓跟ios的知识并且它的一些组件和api也与react有一些区别。所以今天我们来学习一下它的Image组件。看一下与react的使用有什么不同。

Image四种不同的加载方式

我们可以看到官方文档对Image功能的介绍。用于显示不同类型的React组件。但是这些不同类型的图片加载方式是一样的嘛?有什么区别嘛?分别有哪些适用的场景呢?

Image组件支持四种不同的加载方式

  • 静态图片资源
  • 宿主应用图片
  • 网络应用图片
  • base64图片

静态图片资源

静态图片资源,就是下载到项目中的内置的图片资源。是不会发生变化的。用静态服务资源的好处是直接从本地读取图片资源,不受网络的影响加载速度快。对于一些追求高性能且图片不会发生变化的可以考虑这种方式。那我们如何用Image引入静态图片呢?

首先,我们在项目的文件夹里面放一张图片。这就是我们的静态图片资源了。然后我们怎么使用呢?

我们用require引入我们的图片的路径,然后给source属性赋值。同时你可以用style属性设置图片的宽高。

这样我们的图片就引入进来了。也就是说对于静态资源的引入,我们可以用require来引入。对于这个require引入静态资源有一个注意事项。require() 的参数必须是字符串字面量 ,不能是变量。数,因为 React Native 的打包工具(Metro)需要在编译时静态分析所有 require() 调用的路径。

网络应用图片

有时候我们的图片资源是一个url地址。也就是通过网络动态加载的图片。我们平常用的最多的也就是这种形式的图片资源了,后端接口给你返回一个url字符串。你怎么拿到这个字符串渲染图片资源到页面上呢?

我们再拿原来的组件来测试一下。

在Image的source属性里面赋值一个对象,key为uri,值为url地址。而且要设置宽高才能看到图片。那网络应用图片的加载是蛮简单的。就是在source里面设置一个key为uri,值为url地址的对象就可以了。

什么是base64图片?

  • 了解一下base64图片。base64是将二进制编码图像数据编码成ASCAll码字符串的一种方式。

优缺点对比

优点 缺点
无需额外网络请求 体积增大约33%
可内联到HTML/CSS/JS 无法利用浏览器缓存
无跨域问题 解码需要CPU资源
适合小图标 不适合大图片

常见的使用场景

1. 前端开发
  • 小图标内联(<1KB)
  • 邮件内容中的图片
  • 网页预加载占位图
  • 需要快速显示的预览图
2. 移动端(React Native)
  • 本地缓存图片数据
  • 与后端API交互时减少请求次数
  • 离线功能中的资源存储
  • 需要加密传输的图片
3. 特殊场景
  • 二维码生成
  • 截图后即时预览
  • 配合WebView使用
  • 数据库存储小图

综上所述。base64图片是一种将二进制图片改成ASCALL码字符串形式的图片。使图片可以内联到html中。无需网络来加载这个图片。所以加载图片特别的迅速。但是会使文件的大小增大三分之一左右。比较影响文件的大小。所以一般适合追求用户体验和一些小图标。可以减少网络请求,得到更好的用户体验。

如何在react-native当中引入base64的图片呢?

也是很简单的。也是在sourcce属性设置成以uri为key。base64编码位置的对象就可以了。但是加载的方式是不一样的。网络应用图片是从http请求获取的图片。而base64图片是打包后内嵌在bundle包里面的。不受网络的影响。但是会增大包的体积。所以适合用于一些较小的图片。

可以看到它的用法还是蛮简单的哦。

宿主应用图片

在 React Native 中,"宿主应用图片"通常指的是从 原生平台(iOS/Android)资源目录 直接引用的图片,而非通过 JavaScript 层动态加载的图片。这类图片的加载性能更高,适合应用图标、启动屏或核心 UI 元素。

这种情况发生在一部分用react-native开发一部分原生开发的情况。就我个人而言还没有接触到,毕竟刚开始学习react-native。

总结

对于加载图片,react-native有自己的组件Image。Image有四种加载的方式。每种方式呢都有自己的优缺点。开发者得根据他们的特征去进行选择。需要注意的是。加载静态资源图片的时候需要用require引入。并且注意require里面的参数不能是变量,不然react-native的打包工具识别不了。对于网络资源图片和base64资源图片。一般在source属性里面配置以uri为key,资源地址或base64编码为值的对象。这样就能正确的引入图片了。

最后,大家有快速上手react-native的方法可以推荐一下嘛。

相关推荐
qq_5896660537 分钟前
TypeScript 完整入门教程
前端·javascript·typescript
用户059540174464 小时前
LLM对话记忆测试踩坑实录:手工回归30分钟,自动化后2分钟发现3个隐藏Bug
前端·css
Ashley的成长之路5 小时前
前端性能优化实战手册·第2篇:资源加载策略全解
前端·性能优化·资源加载·http/3·性能优化实战·资源加载优化
浅水壁虎5 小时前
vue基础(第二章 )
前端·javascript·vue.js
界面开发小八哥5 小时前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
Getflare5 小时前
前端 + UI 设计 + AI:这不是三个工种,是一个新三角能力模型(附自检清单)
前端·人工智能·ui
oil欧哟5 小时前
我做了一个 Vibe Coding 术语学习站:VibeHub
前端·ai·agent·独立开发·vibe coding
审小匠OpenCPAi6 小时前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
Revolution616 小时前
一个公共表格组件,是怎么一步步失控的
前端·前端工程化