Meta 开源的跨平台移动开发框架,基于 React 构建原生 iOS/Android 应用,一套代码双端运行,开发效率与原生性能兼顾。
说明:
## 核心用法
React Native 使用 JavaScript/TypeScript 和 React 编写代码,通过桥接层调用原生组件渲染,实现「Learn once, write anywhere」。开发者使用熟悉的 React 范式(组件、Hooks、JSX),但需适配移动端特性:用 `FlatList` 替代长列表的 `map`+`ScrollView`,用 `StyleSheet.create` 管理样式,用 React Navigation 处理路由栈。
开发流程支持两条路径:**Expo 托管工作流**(零配置、快速迭代,适合 MVP 和常规需求)和**裸工作流/原生 CLI**(完全可控,需手动链接原生依赖)。`expo-dev-client` 成为折中方案——无需 eject 即可使用原生模块。
## 显著优点
– **开发效率**:热重载、Ota 更新、跨平台代码复用率通常达 80%+
– **性能**:Hermes 引擎将启动时间缩短 50%+,动画可通过 `useNativeDriver` 跑在 UI 线程
– **生态成熟**:Expo SDK 覆盖相机、定位、通知等高频需求,社区库丰富
– **Native 能力**:可编写原生模块(TurboModules)或直接使用 Swift/Kotlin 代码
– **调试工具**:Flipper 集成网络、布局、性能分析,Hermes 支持 Chrome DevTools
## 潜在局限
– **平台差异**:阴影、边框裁剪、状态栏、返回键等行为需 `Platform.select` 处理
– **复杂动画**:超过 60fps 的连续手势动画仍逊于纯原生(如 Flutter、SwiftUI)
– **包体积**:Hermes 虽优化了内存,但 RN 引擎本身带来约 3-5MB 增量
– **New Architecture 迁移**:Fabric/TurboModules 为可选升级,第三方库兼容性需验证
– **调试盲区**:原生崩溃不在 JS 调试器显示,需 Xcode/Android Studio 日志排查
## 适合人群
– 已有 React/Web 经验,希望快速进入移动领域的团队
– 需同时覆盖 iOS/Android,但预算/人力有限的中早期项目
– 以内容展示、表单、电商为主的场景(非重度游戏/图形应用)
– 追求迭代速度优先于极致性能的 SaaS、社交、工具类应用
## 常规风险
– **列表性能**:忘记 `keyExtractor` 或误用 `ScrollView` 导致内存爆炸、卡顿
– **导航状态污染**:传递非序列化参数(函数、类实例)破坏深链和状态恢复
– **订阅泄漏**:`useEffect` 缺少 cleanup 返回函数,造成内存泄漏和异常回调
– **样式陷阱**:inline styles 导致每次渲染新建对象,触发不必要的重渲染
– **构建缓存**:原生依赖变更后未执行 `pod install` 或 `gradlew clean`,引发诡异编译错误









