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

相关推荐
2501_915373881 小时前
Vue 3零基础入门:从环境搭建到第一个组件
前端·javascript·vue.js
沙振宇4 小时前
【Web】使用Vue3开发鸿蒙的HelloWorld!
前端·华为·harmonyos
运维@小兵4 小时前
vue开发用户注册功能
前端·javascript·vue.js
蓝婷儿5 小时前
前端面试每日三题 - Day 30
前端·面试·职场和发展
oMMh5 小时前
使用C# ASP.NET创建一个可以由服务端推送信息至客户端的WEB应用(2)
前端·c#·asp.net
EndingCoder5 小时前
跨平台移动开发框架React Native和Flutter性能对比
flutter·react native·react.js
一口一个橘子5 小时前
[ctfshow web入门] web69
前端·web安全·网络安全
读心悦6 小时前
CSS:盒子阴影与渐变完全解析:从基础语法到创意应用
前端·css
湛海不过深蓝7 小时前
【ts】defineProps数组的类型声明
前端·javascript·vue.js
layman05287 小时前
vue 中的数据代理
前端·javascript·vue.js