使用 React Native 组件、导航和原生模块构建高性能跨平台移动应用。
反射原生开发规则是一项面向实际任务的技能,主要用于任何超过10项的列表的FlatList —— 带有地图的 ScrollView 将所有内存加载, FlatList 虚拟化;keyExtractor 必须返回稳定的 u。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
FlatList — 使用 ScrollView 配合 map 会将全部内容加载进内存,而 FlatList 支持虚拟化渲染keyExtractor 必须返回稳定且唯一的字符串 — 使用数组索引(index)作为 key 会在列表重排序或删除时引发 bugReact.memo 可防止 props 未变化时的重复渲染 — 应包裹纯展示型组件useCallback — 每次渲染生成新函数引用会触发子组件重新渲染StyleSheet.create 中定义useState 适用于组件级本地状态 — 不应仅为一个开关状态就引入 Redux/ZustanduseMemo — 但切勿滥用,缓存本身也存在性能开销useEffect 的清理函数中手动清除订阅和定时器useFocusEffect 处理屏幕专属副作用 — 该 Hook 在屏幕获得焦点时执行,而不仅限于首次挂载navigation.reset — 清空返回栈,防止登录成功后仍可返回登录页StyleSheet.create 必须定义在组件体外部 — 确保样式对象仅创建一次,而非每次渲染都重建flexDirection: 'column',无需显式设置 display: flexPlatform.select 实现平台特定样式 — 比在样式对象中嵌入条件判断更清晰简洁Text 组件均需显式指定样式expo-dev-client 可在不完全 eject 的前提下启用原生模块 — 兼顾开发体验与原生能力InteractionManager.runAfterInteractions 延迟执行耗时任务 — 保障动画流畅性useNativeDriver: true — 使动画运行于 UI 线程而非 JS 线程console.log — 严重影响性能,如需保留请使用 __DEV__ 宏进行条件编译resizeMode — cover 会裁剪图像,contain 会添加黑边/白边,stretch 会导致形变Image.prefetch(url) 应在图片显示前调用react-native-svg — 相比 PNG 更具缩放优势react-native-fast-image 缓存 — 原生 Image 组件无持久化缓存机制useEffect 中使用 async 函数 — 必须先在内部定义异步函数,再显式调用key 警告 — 务必为每一项提供唯一且稳定的 keyuseEffect 中的清理逻辑 — 订阅、定时器、监听器等若未通过返回函数清理,将导致内存泄漏overflow: 'hidden' 才能实现圆角裁剪 — iOS 默认即支持shadow* 系列属性,Android 使用 elevationBackHandler 或导航监听器统一处理npx react-native clean — 清除缓存与派生数据cd ios && pod install — 此步骤常被遗漏cd android && ./gradlew clean