mcpField
R
react-native-dev

react-native-dev

github.com/minimax-ai开发13.7k1.9k 次安装28 周前更新
代码仓库

关于 react-native-dev

react-native-dev 是面向 React Native 和 Expo 应用开发的指南,适用于实现和维护移动应用的开发者。它汇总导航、界面、状态管理、性能、测试及发布相关的模式与参考资料。

主要功能

  1. 01Expo Router 导航与路由模式
  2. 02FlashList 和 expo-image 组件建议
  3. 03Zustand、Jotai 与 React Query 状态方案
  4. 04动画、手势与表单实现参考
  5. 05性能分析、测试和发布检查清单

适用场景

  1. 01搭建采用 Expo Router 的新应用
  2. 02为长列表和图像选择组件方案
  3. 03规划表单、网络数据与状态管理
  4. 04发布前检查性能和测试覆盖

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/minimax-ai/skills --skill react-native-dev

安装后在 Claude Code 中输入/react-native-dev确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
animations.md
components.md
engineering.md
forms.md
native-capabilities.md
navigation.md
networking.md
performance.md
state-management.md
styling.md
testing.md

详细介绍

React Native 和 Expo 开发指南

构建可用于生产环境的 React Native 和 Expo 应用的实用指南。涵盖 UI、动画、状态、测试、性能和部署。

参考资料

按需查阅以下资源:

  • references/navigation.md — Expo Router:Stack、Tabs、NativeTabs(headerLargeTitle、headerBackButtonDisplayMode)、链接、模态窗口、底部弹层、上下文菜单
  • references/components.md — FlashList 模式、expo-image、安全区域(contentInsetAdjustmentBehavior)、原生控件、模糊/玻璃效果、存储
  • references/styling.md — StyleSheet、NativeWind/Tailwind、平台样式、主题、深色模式
  • references/animations.md — Reanimated 3:进入/退出、共享值、手势、滚动驱动动画
  • references/state-management.md — Zustand(选择器、持久化)、Jotai(原子、派生状态)、React Query、Context
  • references/forms.md — React Hook Form + Zod:验证、多步骤表单、动态数组
  • references/networking.md — fetch 封装、React Query(乐观更新)、身份验证令牌、离线支持、API 路由、Webhook
  • references/performance.md — 性能分析工作流、FlashList + memo、包分析、TTI、内存泄漏、动画性能
  • references/testing.md — Jest、React Native Testing Library、使用 Maestro 进行端到端测试
  • references/native-capabilities.md — 相机、位置、权限(use*Permissions hooks)、触觉反馈、通知、生物识别
  • 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
ContextReact.use()React.useContext()(React 18)
安全区域滚动contentInsetAdjustmentBehavior="automatic"<SafeAreaView>
SF Symbols使用 source="sf:name" 的 expo-imageexpo-symbols
扩展应用
情况可考虑
长列表滚动卡顿虚拟化列表库(例如 FlashList)
希望使用 Tailwind 风格的类NativeWind v4
高频读取存储基于同步的存储(例如 MMKV)
使用 Expo 开启新项目选择 Expo Router,而不是裸用 React Navigation
状态管理
状态类型方案
本地 UI 状态useState / useReducer
共享应用状态Zustand 或 Jotai
服务端/异步数据React Query
表单状态React Hook Form + Zod
性能优先事项
优先级问题修复方案
CRITICAL长列表卡顿FlashList + 使用 memo 的列表项
CRITICAL包体积过大避免使用 barrel imports,启用 R8
HIGH重渲染过多Zustand 选择器、React Compiler
HIGH启动缓慢禁用包压缩、使用原生导航
MEDIUM动画掉帧仅对 transform/opacity 设置动画

新建项目初始化

# 1. Create project
npx create-expo-app@latest my-app --template blank-typescript
cd my-app

# 2. Install Expo Router + core deps
npx expo install expo-router react-native-safe-area-context react-native-screens

# 3. (Optional) Common extras
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.tsx 和 index.ts
  4. 创建 app/_layout.tsx 作为根 Stack 布局
  5. 创建 app/(tabs)/_layout.tsx 用于标签导航
  6. 在 app/(tabs)/ 中创建路由文件(参见 navigation.md)

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

核心原则

编写前先查阅参考资料:实现导航、列表、网络功能或项目配置时,请先阅读上方对应的参考文件,了解相关模式和注意事项。

先尝试 Expo Go(npx expo start)。只有在使用本地 Expo 模块、Apple 平台目标或 Expo Go 不包含的第三方原生模块时,才需要自定义构建(eas build)。

条件渲染:使用 {count > 0 && <Text />},不要使用 {count && <Text />}(会渲染出「0」)。

动画规则:仅对 transform 和 opacity 添加动画——它们由 GPU 合成,不会造成布局抖动。

导入:始终直接从源文件导入,不要从 barrel 文件导入,以避免打包体积膨胀。

列表和图像:使用 FlatList 或 RN Image 前,请查看上方的组件偏好表——FlashList 和 expo-image 几乎总是更合适的选择。

路由文件:始终使用 kebab-case,切勿在 app/ 中放置组件、类型或工具函数。

检查清单

新建项目设置
  • 已配置 tsconfig.json 路径别名
  • 已按环境设置 EXPO_PUBLIC_API_URL 环境变量
  • 根布局包含 GestureHandlerRootView(如使用手势)
  • 所有滚动视图均设置了 contentInsetAdjustmentBehavior="automatic"
  • 对于超过 20 项的列表,使用 FlashList 而非 FlatList
发布前
  • 在 --profile 模式下进行性能分析,修复耗时超过 16ms 的帧
  • 已分析打包内容(source-map-explorer),且没有 barrel 导入
  • 已为 Android 启用 R8
  • 已为关键路径编写单元测试和组件测试
  • 已为登录、核心功能和结账流程编写 E2E 测试

Flutter 开发 → 请参阅 flutter-dev 技能。 iOS 原生开发(UIKit/SwiftUI)→ 请参阅 ios-application-dev 技能。 Android 原生开发(Kotlin/Compose)→ 请参阅 android-native-dev 技能。

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

评论

支持 Markdown