从入门小白到精通,玩转React Native鸿蒙跨平台开发:class类图片组件三种图片引入方式
React Native图片组件使用指南:本文介绍了React Native中Image组件的使用方法,包括本地资源、网络图片和Base64数据的加载方式。通过示例代码展示了类组件和函数组件的实现,并详细说明了样式定义、图片缩放控制(capInsets)和性能优化技巧。文章还演示了如何将React Native代码打包为bundle用于OpenHarmony平台,并附带了实际运行效果图。涵盖了从基
Image
用于显示多种不同类型图片的 React 组件,包括网络图片、静态资源、临时的本地图片、以及本地磁盘上的图片(如相册)等。
下面的例子分别演示了如何显示从本地缓存、网络甚至是以’data:'的 base64 uri 形式提供的图片。
请注意对于网络和 base64 数据的图片需要手动指定尺寸!
当图片被缩放的时候,capInsets 指定的角上的尺寸会被固定而不进行缩放,而中间和边上其他的部分则会被拉伸。这在制作一些可变大小的圆角按钮、阴影、以及其它资源的时候非常有用(译注:这就是常说的九宫格或者.9 图。
在React Native中,如果你想通过类(class)的方式来使用Image组件,你可以通过创建一个React组件类来实现。下面是一个使用类组件的方式来使用Image组件的示例:
- 创建一个React类组件
首先,你需要导入React和Image组件。然后,你可以创建一个类组件,并在该组件的render方法中返回一个Image组件。
import React from 'react';
import { Image, View } from 'react-native';
class ImageComponent extends React.Component {
render() {
return (
<View>
<Image
source={require('./path/to/your/image.png')} // 确保图片路径正确
style={{ width: 200, height: 200 }} // 设置图片的样式
/>
</View>
);
}
}
export default ImageComponent;
- 使用该组件
接下来,你可以在你的应用的其他部分使用这个ImageComponent组件。
import React from 'react';
import { SafeAreaView } from 'react-native';
import ImageComponent from './ImageComponent'; // 确保路径正确
const App = () => {
return (
<SafeAreaView>
<ImageComponent />
</SafeAreaView>
);
};
export default App;
- 注意事项
- 图片路径:确保
source属性中的图片路径是正确的。如果你使用的是本地图片,可以使用require('./path/to/your/image.png')的方式引入。对于网络图片,你可以直接使用URL作为字符串,例如source={{ uri: 'https://example.com/image.png' }}。 - 样式:通过
style属性来设置图片的尺寸、边距等样式。你可以使用内联样式或者直接在样式文件中定义样式。 - 性能优化:对于网络图片,考虑使用
resizeMode属性来控制图片的缩放模式,比如cover,contain,stretch等,以优化显示效果和加载性能。例如:resizeMode="cover"。
通过上述步骤,你可以在React Native中通过类组件的方式使用Image组件。随着React Native的不断发展,函数式组件因其简洁性和Hooks的优势而越来越受欢迎,但在某些情况下,类组件仍然有其用武之地。如果你的项目是基于较早的React Native版本或者有特定的需求需要使用类组件,上述方法仍然有效。不过,对于新的项目或升级的项目,建议尽可能使用函数式组件。
实际案例演示:
import React, { Component } from 'react';
import { AppRegistry, View, Image, StyleSheet } from 'react-native';
const styles = StyleSheet.create({
container: {
paddingTop: 50,
},
tinyLogo: {
width: 50,
height: 50,
},
logo: {
width: 66,
height: 58,
},
});
class DisplayAnImage extends Component {
render() {
return (
<View style={styles.container}>
<Image
style={styles.tinyLogo}
source={require('@expo/snack-static/react-native-logo.png')}
/>
<Image
style={styles.tinyLogo}
source={{uri: 'https://reactnative.dev/img/tiny_logo.png'}}
/>
<Image
style={styles.logo}
source={{uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAzCAYAAAA6oTAqAAAAEXRFWHRTb2Z0d2FyZQBwbmdjcnVzaEB1SfMAAABQSURBVGje7dSxCQBACARB+2/ab8BEeQNhFi6WSYzYLYudDQYGBgYGBgYGBgYGBgYGBgZmcvDqYGBgmhivGQYGBgYGBgYGBgYGBgYGBgbmQw+P/eMrC5UTVAAAAABJRU5ErkJggg=='}}
/>
</View>
);
}
}
export default DisplayAnImage;
这段代码展示了一个React Native组件,用于在屏幕上显示多个不同来源的图片。以下是对其知识点的分析:
React Native基础
该代码使用了React Native的核心组件View和Image,这是构建移动应用界面的基础。AppRegistry的导入表明这是一个完整的React Native应用入口。
样式系统
通过StyleSheet.create创建了样式对象,这是React Native中推荐的做法,因为它可以提升渲染性能。样式定义了容器和图片的布局属性,如paddingTop、width、height等。
图片加载
代码展示了三种不同的图片加载方式:
- 本地资源:使用require导入本地图片文件。
- 远程URL:直接使用网络图片地址。
- Base64数据:展示了内联Base64编码的图片数据。
组件结构
DisplayAnImage是一个函数组件(在类组件示例中展示),它返回一个View容器,其中包含多个Image组件。这种结构清晰地展示了React Native中的组件层次和布局方式。
平台适配
虽然代码中未明确展示,但React Native的样式系统会自动适配不同平台(iOS/Android),这是其跨平台特性的重要体现。
这段代码是React Native开发中图像显示的基础实现,涵盖了组件使用、样式定义、资源加载等核心知识点。
需要帮你整理个React Native图片优化的checklist吗?包含加载策略、内存管理和性能调优的常见陷阱~

打包
接下来通过打包命令npn run harmony将reactNative的代码打包成为bundle,这样可以进行在开源鸿蒙OpenHarmony中进行使用。

最后运行效果图如下显示:

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。
更多推荐



所有评论(0)