MiniMax React Native Dev

面向 React Native 与 Expo 的开发实践手册,涵盖组件、状态管理、性能优化等核心内容。

已扫描
适合谁
移动开发工程师、前端开发者(跨平台方向)
不适合谁
无编程基础的初学者、仅需简单页面展示的用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @daidai8910g/minimax-react-native-dev

Skill 说明

命令、参数、文件名以原文为准

React Native 与 Expo 开发指南

一份实用的指南,用于构建生产就绪的 React Native 和 Expo 应用程序。涵盖 UI、动画、状态管理、测试、性能优化及部署。

参考资料

根据需要查阅以下资源:

  • [references/navigation.md](references/navigation.md) — Expo Router:堆栈导航、标签页、原生标签页(headerLargeTitleheaderBackButtonDisplayMode)、链接、模态框、弹出面板、上下文菜单
  • [references/components.md](references/components.md) — FlashList 使用模式、expo-image、安全区域(contentInsetAdjustmentBehavior)、原生控件、模糊/玻璃效果、本地存储
  • [references/styling.md](references/styling.md) — StyleSheet、NativeWind/Tailwind、平台样式、主题化、深色模式
  • [references/animations.md](references/animations.md) — Reanimated 3:进入/退出动画、共享值、手势、滚动驱动动画
  • [references/state-management.md](references/state-management.md) — Zustand(选择器、持久化)、Jotai(原子、派生状态)、React Query、Context
  • [references/forms.md](references/forms.md) — React Hook Form + Zod:表单验证、多步表单、动态数组
  • [references/networking.md](references/networking.md) — fetch 封装、React Query(乐观更新)、认证令牌、离线支持、API 路由、Webhook
  • [references/performance.md](references/performance.md) — 性能分析流程、FlashList + memo、包体积分析、首次内容渲染时间(TTI)、内存泄漏、动画性能
  • [references/testing.md](references/testing.md) — Jest、React Native Testing Library、Maestro 实现端到端测试
  • [references/native-capabilities.md](references/native-capabilities.md) — 相机、位置、权限(use*Permissions 钩子)、触觉反馈、通知、生物识别
  • [references/engineering.md](references/engineering.md) — 项目结构(components/ui/stores/services/)、路径别名、SDK 升级、EAS 构建/提交、CI/CD、DOM 组件

快速参考

组件使用建议

用途推荐方案不推荐方案
列表展示FlashList@shopify/flash-list)+ memo 渲染项FlatList(无视图复用)
图片加载expo-imageRN <Image>(无缓存、不支持 WebP)
点击交互PressableTouchableOpacity(过时)
音频播放expo-audioexpo-av(已弃用)
视频播放expo-videoexpo-av(已弃用)
动画实现Reanimated 3RN Animated API(功能有限)
手势处理Gesture HandlerPanResponder(过时)
平台判断process.env.EXPO_OSPlatform.OS
上下文获取React.use()React.useContext()(React 18 后推荐)
安全区域滚动contentInsetAdjustmentBehavior="automatic"<SafeAreaView>
SF 符号expo-image 配合 source="sf:name"expo-symbols

项目扩展建议

场景建议考虑
长列表出现滚动卡顿使用虚拟化列表库(如 FlashList)
希望使用 Tailwind 风格类名NativeWind v4
高频读取本地数据同步存储方案(如 MMKV)
新项目使用 Expo优先选择 Expo Router 而非裸 React Navigation

状态管理方案

状态类型推荐方案
本地 UI 状态useState / useReducer
全局应用状态Zustand 或 Jotai
服务器或异步数据React Query
表单状态React Hook Form + Zod

性能优化优先级

优先级问题解决方案
严重列表滚动卡顿使用 FlashList + 项组件 memo
严重包体积过大避免通配符导入,启用 R8 压缩
过多重新渲染使用 Zustand 选择器、React Compiler
启动缓慢关闭包压缩、使用原生导航
中等动画掉帧仅对 transformopacity 进行动画

新项目初始化

# 1. 创建项目
npx create-expo-app@latest my-app --template blank-typescript
cd my-app

# 2. 安装 Expo Router 及核心依赖
npx expo install expo-router react-native-safe-area-context react-native-screens

# 3. (可选)安装常用附加模块
npx expo install expo-image react-native-reanimated react-native-gesture-handler

配置步骤如下:

  1. package.json 中设置入口文件:"main": "expo-router/entry"
  2. app.json 中添加 scheme:"scheme": "my-app"
  3. 删除 App.tsxindex.ts
  4. 创建 app/_layout.tsx 作为根堆栈布局
  5. 创建 app/(tabs)/_layout.tsx 用于标签页导航
  6. app/(tabs)/ 下创建路由文件(详见 [navigation.md](references/navigation.md))

如需支持 Web,还需安装:npx expo install react-native-web react-dom @expo/metro-runtime

核心开发原则

在编写代码前先查阅参考文档:涉及导航、列表、网络请求或项目搭建时,请先阅读对应参考文件,了解最佳实践与常见陷阱。

优先使用 Expo Gonpx expo start)。仅当需要使用本地 Expo 模块、Apple 平台目标或 Expo Go 不支持的第三方原生模块时,才需自定义构建(eas build)。

条件渲染:使用 {count > 0 && <Text />} 而非 {count && <Text />}(后者会将 0 当作真值渲染“0”)。

动画规则:仅对 transformopacity 进行动画——这些属性由 GPU 合成,不会引发布局重排。

导入规范:始终直接从源文件导入,避免使用通配符导入(barrel files),以减少包体积。

列表与图片:在使用 FlatList 或 RN <Image> 前,请参考“组件使用建议”表格——通常情况下,FlashListexpo-image 是更优选择。

路由文件命名:始终使用连字符命名法(kebab-case),禁止在 app/ 目录中混入组件、类型或工具函数。

项目准备清单

新项目设置

  • [ ] tsconfig.json 中路径别名已配置
  • [ ] 按环境设置 EXPO_PUBLIC_API_URL 环境变量
  • [ ] 根布局包含 GestureHandlerRootView(若使用手势)
  • [ ] 所有滚动视图均设置 contentInsetAdjustmentBehavior="automatic"
  • [ ] 列表项超过 20 个时使用 FlashList 而非 FlatList

发布前检查

  • [ ] 在 --profile 模式下进行性能分析,修复帧时间超过 16ms 的部分
  • [ ] 使用 source-map-explorer 分析包体积,确认无通配符导入
  • [ ] Android 启用 R8 压缩
  • [ ] 关键路径完成单元测试与组件测试
  • [ ] 登录、核心功能、结账流程完成端到端测试

React Native 开发 → 请参阅 flutter-dev 技能。

iOS 原生(UIKit/SwiftUI)→ 请参阅 ios-application-dev 技能。

Android 原生(Kotlin/Compose)→ 请参阅 android-native-dev 技能。

*React Native 是 Meta Platforms, Inc. 的注册商标。Expo 是 650 Industries, Inc. 的注册商标。所有其他产品名称均为其各自所有者的商标。*

D
@daidai8910g

已收录 1 个 Skill

相关推荐