Skip to content

React Native 参考

基于 React Native 0.86 · Expo SDK 57 · 核于 2026-07

速查

  • 版本:RN 0.86 / React 19.2 / Expo SDK 57;新架构 0.76 默认、0.82 强制;默认引擎 Hermes
  • 新架构四大件:JSI / Fabric / TurboModules / Codegen(配角 Bridgeless / Yoga / Hermes)
  • 最常踩:Flexbox 默认 column、文本必包 TextuseNativeDrivertransform/opacity、长列表用 FlatList、Expo Go 装不了自定义原生

一、版本坐标

RN 最新稳定0.86(2026-06)
React19.2
Expo SDK57(= RN 0.86)
默认 JS 引擎Hermes(AOT 字节码)
新架构默认0.76
新架构强制(不可关)0.82(Expo SDK 55)
可关新架构的最后版本0.81(Expo SDK 54)
Bridgeless 成新架构默认0.74

二、新架构四大件

组件一句话
JSIJS↔C++ 直接互引、同步调用,替代序列化 Bridge
FabricC++ 统一新渲染器,同步布局 + React 并发(替 Paper)
TurboModulesJSI 原生模块,类型安全 + 懒加载
Codegen构建期从 TS/Flow spec 生成原生胶水,保类型安全
Bridgeless彻底不建桥(0.74 默认)
Yoga跨平台 Flexbox 布局引擎
Hermes默认引擎,AOT 预编译字节码

三、Flexbox:RN vs Web 默认值

属性RNWeb
flexDirectioncolumnrow
flexShrink01
alignContentflex-startstretch
flex单个数字grow/shrink/basis 简写

四、核心组件映射

RNAndroidiOS
ViewViewGroupUIView
TextTextViewUITextView
ImageImageViewUIImageView
ScrollViewScrollViewUIScrollView
TextInputEditTextUITextField

五、FlatList 优化 props

prop默认作用
getItemLayout等高项跳过异步测量(最有效)
keyExtractor唯一 key
windowSize21渲染窗口=视口高倍数
initialNumToRender10首屏渲染项数
maxToRenderPerBatch10每批渲染项数
removeClippedSubviewsAndroid true视口外视图卸载

六、Expo 关键概念

概念要点
Expo Router文件路由,建于 React Navigation 之上
Expo Go固定内置库的 playground,不能加自定义原生
Development Buildexpo-dev-client 的自有调试 App,可加原生
CNG / prebuild原生目录当构建产物(.gitignore),配置为真源
Config Pluginsprebuild 期声明式改原生工程(with<Name>
Expo Modules API写的原生模块默认支持新架构

七、EAS 命令与 OTA 边界

bash
eas build --platform all              # 云端出包
eas submit --platform android         # 上架
eas update --channel production --message "..."  # OTA
可 OTA ✅不可 OTA ❌
JS、样式、文案、图片、灰度原生代码/依赖、权限、SDK 升级

八、常见易错点

#易错点
1Flexbox 默认 column(非 Web 的 row)
2文本必须包在 <Text> 里,裸串放 <View> 报错
3样式无 CSS 继承/级联,继承只在 <Text> 嵌套内
4样式 camelCase、无单位(dp),Android 不支持负 margin
5TextInput.onChangeText 直接给字符串,非事件对象
6useNativeDriver: true 只支持 transform/opacity
7长列表用 FlatList 而非 ScrollView
8Platform.Version:Android 整数、iOS 字符串
9新架构:0.76 默认、0.82 强制;Bridgeless 0.74 默认
10Expo Go 装不了自定义原生模块,需 Development Build
11CNG 下 ios/android/.gitignore 的构建产物,别手改
12EAS Update 不能 OTA 原生代码/权限/SDK 升级
13Hermes 性能要在 release build 才准
14RN DevTools 需 Hermes;chrome://inspect 远程调试已废弃
15Fast Refresh 不保留类组件 state
16RN 无 CORS;iOS 默认 HTTPS、Android 默认禁明文
17「Learn once, write anywhere」(非 write once run anywhere)
18RN 渲染真实原生控件(区别于 Flutter 自绘、WebView 套壳)

九、权威链接