从 react-native 中导入使用
容器 View
默认使用 Flex 布局
复杂布局

安全区域适配
安全区域(Safe Area)适配是指确保内容不会被设备的刘海、凹槽、状态栏或底部导航栏遮挡。特别是对于 iPhone X 系列和其他异形屏设备,安全区域适配尤为重要。
安装依赖
导入使用
可滚动容器 ScrollView
适用于中等数量内容的滚动场景:
- 图片轮播 - 使用水平滚动和分页功能
- 表单滚动 - 包含多个输入字段的长表单
- 新闻列表 - 垂直滚动的内容列表
- 标签页 - 水平滚动的标签导航
默认为垂直滚动
- 水平滚动添加 horizontal
- scrollEventThrottle 控制着 onScroll 事件被触发的频率,iOS必须写此属性,值通常为16,值为16以下与16无差异,因超过刷新频率。
- 通常都要设置滚动时隐藏键盘
- 分页滚动:需拖拽到触发翻页的位置,才会滚动到上/下一页
- 禁止滚动
- 隐藏滚动条
- 到达边界时反弹 bounces
- keyboardShouldPersistTaps 控制当点击非输入区域时键盘是否收起,通常使用默认值 handled
|
属性名 |
类型 |
描述 |
|
|
|
滚动时触发的回调函数 |
|
|
|
开始拖动时触发的回调函数 |
|
|
|
结束拖动时触发的回调函数 |
|
|
|
开始惯性滚动时触发的回调函数 |
|
|
|
结束惯性滚动时触发的回调函数 |
|
|
|
内容尺寸变化时触发的回调函数 |
下拉刷新 RefreshControl
需导入内置组件 RefreshControl
控制滚动
实时获取滚动的距离
长列表 FlatList
只渲染屏幕上可见的元素,极大地提高了应用的性能
- 列表数据 data
- renderItem 各项的渲染函数
- keyExtractor - 为列表项生成唯一键的函数
- horizontal - 水平滚动
- 隐藏滚动条
- 多列 numColumns
- ItemSeparatorComponent - 列表项之间的分隔线组件
更多用法范例:含上拉刷新,下拉加载等
实战范例
- 水平滚动分类
- 网格导航
分组列表 SectionList
对列表进行了分组,每个分组都有自己的头部和页脚,其他同 FlatList
常用于字母表分组显示联系人,电商商品分类,按日期或时间段分组显示事件,将应用设置按功能模块分组,按日期分组显示聊天消息,按内容类型(如推荐、热点、视频)或时间分组展示新闻,文件系统目录、分类导航等。
- 使用 stickySectionHeadersEnabled 实现滚动时,粘性固定头部
- 定义整个列表的头部和页脚
- 自定义触底加载更多的区域,0.2 即距底部20%时加载更多,推荐值为 0.2或0.3

文本 Text
- 会独占一行,可设置宽高、边框(不影响字体大小)
- 嵌套的文本不能设置内外边距和文本对齐
对齐

截断
阴影

自动换行
自动缩放 allowFontScaling
默认值为 true ,即应用内的文本会根据用户设备的系统字体大小设置进行缩放。例如,如果用户在手机设置中将字体调大,应用中的文本也会相应变大。
除非页面布局固定,不宜改变文字大小,否则都需要支持文字大小跟随系统变化。
文本选择

图片 Image
本地图片
按比例缩放(设置宽高比)aspectRatio
使用 resizeMode 属性控制图片如何适应容器(常用 ‘cover’, ‘contain’)
模糊和淡入动画时长
图片着色 tintColor,常用于图标变色,暗黑模式切换等
加载状态
defaultSource 仅生产包支持
缓存策略
适用于网络图片
获取图片信息
使用 Image.resolveAssetSource
Image.getSize
预加载图片
适用于需要显示大量图片或需要快速加载图片的场景
批量预加载
背景图片 ImageBackground
可在图片上叠加其他内容,适用于创建带有背景图的界面、卡片或全屏背景。
用法与图片 Image 相同,在其内部的元素会叠加在图片上
实战范例如下:
- 银行卡
响应式背景
根据屏幕尺寸调整背景图片
文本输入 TextInput
单行输入
多行输入
限制输入
- secureTextEntry 不能和多行属性同时使用
自定义外观
自定义键盘
keyboardType 的取值
- default(默认键盘)
- number-pad(数字键盘)
- email-address(邮箱键盘)
- phone-pad(电话键盘)
- decimal-pad(小数键盘)
returnKeyType的取值
- “done”:完成当前操作,通常会收起键盘
- “go”:前往某个位置或执行操作
- “next”:移动到下一个输入字段
- “search”:执行搜索操作
- “send”:发送内容
相关事件
通常用 onChangeText ,不用 onChange
按钮
- 简单按钮:使用 Button 或 TouchableOpacity
- 需要明确视觉反馈:使用 TouchableHighlight
- Android 特定按钮:使用 TouchableNativeFeedback
- 复杂交互逻辑:使用 Pressable
- 自定义动画效果:使用 TouchableWithoutFeedback 配合 Animated
|
组件名称 |
视觉反馈 |
平台支持 |
性能 |
自定义能力 |
适用场景 |
主要属性 |
|
TouchableHighlight |
按下时背景色变化 |
iOS/Android |
中等 |
高 |
列表项、卡片、自定义按钮 |
|
|
TouchableOpacity |
按下时透明度变化 |
iOS/Android |
中等 |
高 |
图标按钮、轻量级交互 |
|
|
TouchableWithoutFeedback |
无视觉反馈 |
iOS/Android |
高 |
极高 |
自定义动画反馈、无视觉变化的交互 |
|
|
TouchableNativeFeedback |
Android 原生波纹效果 |
Android 5.0+ |
高 |
中等 |
Android 平台的按钮、卡片 |
|
|
Button |
平台默认样式 |
iOS/Android |
中等 |
低 |
快速原型、简单按钮 |
|
|
Pressable |
灵活自定义 |
iOS/Android |
高 |
极高 |
复杂交互、自定义状态管理 |
|
TouchableHighlight
- 只支持一个子节点
- 必须复写 onPress

开关 Switch

value(布尔值):控制开关状态(true为开启,false为关闭)。onValueChange(函数):状态变化时触发,接收新的布尔值作为参数。disabled(布尔值):是否禁用开关。trackColor(对象):自定义背景颜色(iOS)或轨道颜色(Android)。
thumbColor(字符串):自定义开关按钮颜色。
- iOS 为圆形滑块,Android 为矩形滑块
- ios_backgroundColor 仅在 iOS 上生效,控制开关关闭时的背景色。
弹窗 Modal
visible(布尔值):控制 Modal 是否显示。animationType(字符串):动画效果,可选值:"slide"(从底部滑入)、"fade"(淡入淡出)、"none"(无动画)。transparent(布尔值):背景是否透明,设为true时可自定义背景样式。onRequestClose(函数):点击硬件返回键(Android)或背景时触发,通常用于关闭 Modal。
实战范例见
状态栏 StatusBar
- barStyle - 状态栏文本颜色
'default'- 默认样式(取决于平台)'light-content'- 白色文本(适用于深色背景)'dark-content'- 黑色文本(适用于浅色背景)
- backgroundColor - 状态栏背景颜色(仅在
translucent为false时有效) - translucent - 状态栏是否透明
true- 状态栏透明,内容可以在状态栏下方显示false- 状态栏不透明,内容会被状态栏遮挡
- hidden - 状态栏是否隐藏
true- 隐藏状态栏false- 显示状态栏
- networkActivityIndicatorVisible - 是否显示网络活动指示器(仅 iOS)
true- 显示加载指示器false- 不显示
- animated - 更改状态栏设置时是否使用动画
true- 使用动画过渡false- 立即更改


所有评论(0)