詳細講一下在RN(ReactNative)中,6個比較常用的組件以及詳細的用法

embedded/2025/1/23 15:23:06/

1.View 组件(基础容器)

javascript">import { View, StyleSheet } from 'react-native';const MyComponent = () => {return (<View style={styles.container}  // 样式pointerEvents="none"      // 控制触摸事件:'none', 'box-none', 'box-only', 'auto'accessible={true}         // 无障碍访问>{/* 子组件 */}</View>);
};const styles = StyleSheet.create({container: {flex: 1,                    // flex 布局padding: 10,                // 内边距backgroundColor: '#fff',    // 背景色borderRadius: 8,            // 圆角elevation: 5,               // Android 阴影shadowColor: '#000',        // iOS 阴影颜色shadowOffset: {             // iOS 阴影偏移width: 0,height: 2,},shadowOpacity: 0.25,        // iOS 阴影透明度shadowRadius: 3.84,         // iOS 阴影半径}
});

2.Text 组件(文本显示):

javascript">import { Text } from 'react-native';const TextExample = () => {return (<TextnumberOfLines={2}           // 最大行数ellipsizeMode="tail"        // 文本截断方式:'head', 'middle', 'tail', 'clip'selectable={true}           // 是否可选择style={styles.text}         // 样式onPress={() => {}}          // 点击事件>这是一段文本</Text>);
};const styles = StyleSheet.create({text: {fontSize: 16,                 // 字体大小fontWeight: 'bold',           // 字体粗细color: '#333',               // 文字颜色textAlign: 'center',         // 文本对齐lineHeight: 24,              // 行高letterSpacing: 0.5,          // 字间距textDecorationLine: 'underline', // 文本装饰线}
});

3.Image 组件(图片显示)

javascript">import { Image } from 'react-native';const ImageExample = () => {return (<Imagesource={{                   // 图片源uri: 'https://example.com/image.jpg',// 或本地图片:source={require('./image.jpg')}}}style={styles.image}        // 样式resizeMode="cover"          // 缩放模式:'cover', 'contain', 'stretch', 'center'blurRadius={0}              // 模糊效果fadeDuration={300}          // 淡入动画时长onLoad={() => {}}           // 加载完成回调onError={() => {}}          // 加载错误回调defaultSource={require('./placeholder.jpg')} // 加载占位图/>);
};const styles = StyleSheet.create({image: {width: 200,                   // 宽度height: 200,                  // 高度borderRadius: 100,            // 圆角}
});

4.TouchableOpacity 组件(可点击容器):

javascript">import { TouchableOpacity } from 'react-native';const ButtonExample = () => {return (<TouchableOpacitystyle={styles.button}        // 样式activeOpacity={0.7}          // 按下时的透明度onPress={() => {}}           // 点击事件onLongPress={() => {}}       // 长按事件disabled={false}             // 是否禁用><Text>点击我</Text></TouchableOpacity>);
};const styles = StyleSheet.create({button: {padding: 10,backgroundColor: '#007AFF',borderRadius: 5,alignItems: 'center',         // 子元素水平居中justifyContent: 'center',     // 子元素垂直居中}
});

5.TextInput 组件(输入框):

javascript">import { TextInput } from 'react-native';const InputExample = () => {const [text, setText] = useState('');return (<TextInputvalue={text}                 // 输入值onChangeText={setText}       // 值改变回调placeholder="请输入..."      // 占位文本placeholderTextColor="#999"  // 占位文本颜色keyboardType="default"       // 键盘类型secureTextEntry={false}      // 密码输入模式multiline={false}            // 多行输入maxLength={100}              // 最大长度autoCapitalize="none"        // 自动大写autoCorrect={false}          // 自动纠正style={styles.input}         // 样式onFocus={() => {}}          // 获得焦点回调onBlur={() => {}}           // 失去焦点回调/>);
};const styles = StyleSheet.create({input: {height: 40,borderWidth: 1,borderColor: '#ddd',borderRadius: 5,paddingHorizontal: 10,backgroundColor: '#fff',}
});

6.ScrollView 组件(滚动容器):

javascript">import { ScrollView, RefreshControl } from 'react-native';const ScrollExample = () => {const [refreshing, setRefreshing] = useState(false);return (<ScrollViewstyle={styles.scrollView}    // 容器样式contentContainerStyle={styles.content} // 内容容器样式horizontal={false}           // 是否水平滚动showsVerticalScrollIndicator={false}   // 显示垂直滚动条bounces={true}              // iOS 弹性效果scrollEnabled={true}         // 是否可以滚动refreshControl={             // 下拉刷新控件<RefreshControlrefreshing={refreshing}onRefresh={() => {setRefreshing(true);// 刷新逻辑setTimeout(() => setRefreshing(false), 2000);}}/>}>{/* 滚动内容 */}</ScrollView>);
};const styles = StyleSheet.create({scrollView: {flex: 1,},content: {padding: 15,}
});

这些是最基础也是最常用的组件,每个组件都有很多配置项和样式属性。建议:

  • 根据实际需求选择合适的组件
  • 注意性能优化
  • 考虑平台差异(iOS/Android)
  • 合理使用样式和布局

http://www.ppmy.cn/embedded/156329.html

相关文章

(2025,BioLM,综述)用于生物信息学的 LLM

Large Language Models for Bioinformatics 目录 0. 摘要 1. 引言 2. 生物信息学中语言模型与基础模型的背景 2.1 语言模型与生物信息学基础概述 2.1.1 LLM 与基础模型 2.1.2 生物信息学的应用与挑战 2.2 训练方法与模型 2.2.1 预训练 2.2.2 RLHF 2.2.3 知识蒸馏 …

政府机构如何使用六西格玛来提高效率和提供更好的服务

联邦机构面临着改善运作、降低成本和确保向公民提供高质量服务的巨大压力。六西格玛方法与Minitab强大的工具相结合&#xff0c;使政府组织能够充满信心地应对这些挑战。通过简化流程、减少浪费和改进决策&#xff0c;政府团队可以提供真正有影响力的服务。 六西格玛如何改善政…

OFD 套版生成原理与 C# 实现详解

1. 引言 OFD&#xff08;Open Fixed-layout Document&#xff09;是一种基于 XML 的开放版式文档格式&#xff0c;主要用于电子文档的存储和交换。与 PDF 类似&#xff0c;OFD 是一种固定版式文档格式&#xff0c;能够确保文档在不同设备和平台上显示的一致性。OFD 格式广泛应…

flask常见问答题

以下是一些关于 Flask 框架的问答题&#xff0c;供您学习或测试知识点&#xff1a; 基础知识 Flask 是什么&#xff1f;它的主要特点是什么&#xff1f; 答&#xff1a;Flask 是一个基于 Python 的轻量级 Web 框架&#xff0c;其特点是简单、灵活和模块化。 Flask 和 Django …

树莓派pico入坑笔记,SPI使用

关于树莓派pico和circuitpython的更多玩法&#xff0c;请看树莓派pico专栏 uart使用见这篇文章 调用circuitpy的busio模块来使用&#xff0c;除此以外&#xff0c;uart、iic等要需要使用该模块&#xff0c;使用方法见及详细信息见这篇文章 收发数据的格式是字节数组bytearra…

【docker-1】快速入门docker

docker搭建 1、下载二进制文件 wget https://mirror.nju.edu.cn/docker-ce/linux/static/stable/aarch64/docker-20.10.7.tgz解压docker目录 tar -xzvf docker-20.10.7.tgz .安装文件到/usr/local/bin mv ./docker/* /usr/local/bin2、配置docker.service [Unit] Descript…

图片生成Prompt编写技巧

1. 图片情绪&#xff08;场景氛围&#xff09; 一张图片一般都会有一个情绪基调&#xff0c;因为作画本质上也是在传达一些情绪&#xff0c;一般都会借助图片的氛围去转达。例如&#xff1a;比如家庭聚会一般是欢乐、喜乐融融。断壁残垣一般是悲凉。还有萧瑟、孤寂等。 2.补充细…

【深度学习基础】多层感知机 | 多层感知机的实现

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…