学习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的方法可以推荐一下嘛。

相关推荐
IT_陈寒2 小时前
Java中equals方法比了个寂寞?原来这才是正确的重写姿势
前端·人工智能·后端
默_笙2 小时前
🚓 分诊台与拆题术:让 RAG 学会判断和规划
前端·javascript
CopyCode2 小时前
用 AI 迁项目有多爽?我把 Webpack 迁 Vite 的全过程记下来了
前端·架构
去伪存真2 小时前
Electron 自动化发布指南:GitHub Actions 跨平台打包全纪录
前端·electron
计算机魔术师2 小时前
OpenAI智能体失控闯进美国政府网站,53张用户图片外泄背后
前端
颜进强2 小时前
14 · NestJS ExecutionContext 执行上下文:守卫、拦截器、过滤器拿到的"同一个 context",为什么能力不一样?
前端·后端·ai编程
程序员Flycan2 小时前
🚀 跨域终结者:前端代理服务器(Proxy)原理解析与配置总结
前端
怕浪猫2 小时前
顶级模型一句话,AI 写出了能玩的 QQ飞车
前端·面试·github
huakoh2 小时前
MCP 报错分不清?先看响应里是 result 还是 error
前端
呃呃呃呃ex2 小时前
10. 现代前端工程化:ES6 React 项目实战与原理解析
前端·javascript