技能 react-native-dev
📱

react-native-dev

安全 ⚙️ 外部命令

构建 React Native 和 Expo 应用

使用 React Native 构建移动应用需要处理组件、状态管理、动画和部署方面的复杂选择。本技能提供结构化的开发指南,包含经过验证的模式、推荐库和适用于 Expo 和 React Native 项目的生产级示例。

支持: Claude Codex Code(CC)
🥉 76 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“react-native-dev”。 使用 Expo Router 创建带有 Home、Search 和 Profile 标签的标签页导航布局。

预期结果:

  • 标签页布局文件 (app/(tabs)/_layout.tsx),使用 expo-router 的 Tabs 组件
  • 三个标签页定义,带 Ionicons 图标
  • 支持大标题样式的头部配置和样式化头部
  • 单独的路由文件:app/(tabs)/home.tsx、app/(tabs)/search.tsx、app/(tabs)/profile.tsx

正在使用“react-native-dev”。 展示如何使用 Zustand 的 persist 中间件来管理用户偏好设置。

预期结果:

  • 使用 create 和 persist 中间件的 Zustand store 定义
  • 类型安全的 state 接口,包含主题、语言和通知设置
  • 组件中的选择器模式用法以防止不必要的重新渲染
  • 使用 MMKV 或 AsyncStorage 的存储后端配置

安全审计

安全
v1 • 4/16/2026

This skill is a documentation-only reference guide for React Native and Expo development. It contains 12 markdown files (SKILL.md plus 11 reference files) with code examples. All 740 static analysis findings are false positives: the scanner misidentified markdown code blocks (triple-backtick fenced examples) as executable code. Patterns flagged include shell commands in installation instructions, relative imports shown as code examples, environment variable usage in documentation, and documentation references to .env files. No executable code exists in this skill.

12
已扫描文件
3,050
分析行数
1
发现项
1
审计总数
审计者: claude

质量评分

45
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性

你能构建什么

从头开始创建新的 Expo 项目

开发者需要搭建一个生产级的 React Native 应用,具备正确的项目结构、路由、状态管理和 CI/CD 流水线。

实现复杂的动画和手势

开发者需要使用 Reanimated 3 和 Gesture Handler 添加流畅的动画、手势处理和滚动驱动效果。

优化应用性能并准备发布

团队需要分析应用性能、修复滚动卡顿、减小 bundle 大小、配置 EAS 构建,并为 App Store 和 Play Store 部署设置 CI/CD。

试试这些提示

入门级:创建新的 Expo 项目
使用 TypeScript 设置新的 Expo 项目。包含 Expo Router 导航和标签页布局、FlashList 列表、expo-image 图片和 Zustand 状态管理。展示推荐的项目结构。
入门级:构建登录表单
使用 React Hook Form 和 Zod 验证创建登录表单。包含邮箱和密码字段及错误信息、带加载状态的提交按钮,以及使用 fetch 包装器的 API 集成。
中级:添加动画过渡效果
使用 Reanimated 3 在列表页面和详情页面之间实现共享元素过渡。列表使用带有备忘录化项的 FlashList。点击项目时,通过淡入和缩放过渡动画将其动画化到详情页面。
高级:配置 CI/CD 流水线
使用 GitHub Actions 设置 EAS Build 和 Submit 流水线。包含开发和生产的独立构建配置、主分支合并时自动提交到应用商店,以及不同阶段的环境变量管理。

最佳实践

  • 始终使用 FlashList 而不是 FlatList 作为列表,使用 expo-image 而不是 RN Image 以获得更好的性能和缓存
  • 只使用 Reanimated 动画 transform 和 opacity 属性,以保持动画 GPU 合成并避免布局重新计算
  • 使用 EXPO_PUBLIC_ 前缀处理客户端环境变量,并在 API 路由中不使用前缀地保留纯服务端密钥

避免

  • 在生产环境的列表和图片画廊中使用 FlatList 而不使用备忘录化项,或使用 RN Image 而不使用缓存
  • 从桶文件(index.ts)导入会增加 bundle 大小——始终直接从源模块导入
  • 使用 Platform.OS 而不是 process.env.EXPO_OS 进行平台检查,使用 useContext 而不是 React.use(React 18)

常见问题

何时应该使用 Expo Go 与使用 EAS Build 的自定义构建?
使用 Expo Go 进行快速原型设计和标准 Expo 模块测试。当项目需要自定义原生模块、特定原生 SDK 版本、Apple 目标或 Expo Go 中不可用的第三方模块时,使用 EAS Build。
我应该为项目选择哪个状态管理库?
使用 useState 或 useReducer 处理本地 UI 状态。选择 Zustand 或 Jotai 处理跨组件的共享应用状态。使用 React Query 处理服务器和异步数据的缓存。除非应用有极其复杂的状态需求,否则避免使用 Redux。
如何在 Expo 应用中安全地处理环境变量?
带有 EXPO_PUBLIC_ 前缀的变量会被嵌入客户端 bundle 中,适用于 API URL 等公共配置。不带前缀的变量(如 LLM_API_KEY)仅在服务端 API 路由中运行,不会到达客户端。在 CI/CD 中通过 eas env-create 设置生产环境密钥。
为什么本技能推荐 FlashList 而不是 FlatList?
Shopify 的 FlashList 提供了内置的视图回收功能,可以显著降低内存使用并防止长列表上的滚动卡顿。FlatList 回收所有可见项而不进行回收,在包含超过 20 个项目的列表上会导致性能问题。
如何有效地测试 React Native 组件?
使用 Jest 和 React Native Testing Library 进行单元和组件测试。测试用户可见的行为(文本内容、按钮交互)而不是实现细节。对于端到端测试,使用 Maestro,它不需要构建配置且与 Expo 配合使用。
可扩展 React Native 应用推荐的项目结构是什么?
将代码组织为:app/ 用于 Expo Router 路由,components/ui/ 用于原子组件,components/shared/ 用于组合组件,stores/ 用于状态管理,services/ 用于 API 和原生模块包装器,hooks/ 用于自定义 hooks,constants/ 用于主题值,types/ 用于 TypeScript 定义。使用路径别名避免脆弱的相对导入。