theone-react-native-standards
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTheOne Studio React Native Development Standards
TheOne Studio React Native 开发规范
⚠️ React Native Latest + TypeScript: All patterns use latest React Native with TypeScript strict mode, Expo SDK 51+, and modern React 18+ patterns.
⚠️ React Native 最新版本 + TypeScript: 所有模式均使用搭配TypeScript严格模式的最新版React Native、Expo SDK 51+,以及现代React 18+模式。
Skill Purpose
技能用途
This skill enforces TheOne Studio's comprehensive React Native development standards with CODE QUALITY FIRST:
Priority 1: Code Quality & Hygiene (MOST IMPORTANT)
- TypeScript strict mode, ESLint + Prettier enforcement
- Path aliases (@/), throw errors (never suppress), structured logging
- No any types, proper error boundaries, consistent imports
- File naming conventions, no inline styles in JSX
Priority 2: Modern React & TypeScript
- Functional components with Hooks (NO class components)
- Custom hooks for logic reuse, proper memoization
- Type-safe props, generics, discriminated unions
- useCallback/useMemo for performance
Priority 3: React Native Architecture
- Zustand/Jotai for state (document both, require consistency per project)
- Expo Router (file-based) OR React Navigation 7
- FlatList optimization (NEVER ScrollView + map)
- Platform-specific code (.ios.tsx/.android.tsx)
Priority 4: Mobile Performance
- List rendering optimization (getItemLayout, keyExtractor)
- Prevent unnecessary rerenders (React.memo, shouldComponentUpdate)
- Lazy loading, code splitting, bundle optimization
- Memory leak prevention (cleanup effects)
本技能以代码质量优先为原则,强制执行TheOne Studio的全面React Native开发标准:
优先级1:代码质量与规范(最重要)
- TypeScript严格模式、ESLint + Prettier强制执行
- 路径别名(@/)、主动抛出错误(绝不压制)、结构化日志
- 禁止使用any类型、正确使用错误边界、统一导入顺序
- 文件命名规范、JSX中禁止使用内联样式
优先级2:现代React与TypeScript
- 使用搭配Hooks的函数式组件(禁止类组件)
- 自定义Hook实现逻辑复用、正确使用 memoization
- 类型安全的Props、泛型、区分联合类型
- 使用useCallback/useMemo优化性能
优先级3:React Native架构
- 使用Zustand/Jotai进行状态管理(需文档说明,且每个项目保持一致性)
- Expo Router(基于文件)或React Navigation 7
- FlatList优化(绝不使用ScrollView + map)
- 平台专属代码(.ios.tsx/.android.tsx)
优先级4:移动端性能
- 列表渲染优化(getItemLayout、keyExtractor)
- 避免不必要的重渲染(React.memo、shouldComponentUpdate)
- 懒加载、代码分割、包体积优化
- 防止内存泄漏(清理副作用)
When This Skill Triggers
本技能的触发场景
- Writing or refactoring React Native TypeScript code
- Implementing mobile UI components or features
- Working with state management (Zustand/Jotai)
- Implementing navigation flows (Expo Router/React Navigation)
- Optimizing list rendering or app performance
- Reviewing React Native pull requests
- Setting up project architecture or conventions
- 编写或重构React Native TypeScript代码
- 实现移动端UI组件或功能
- 处理状态管理(Zustand/Jotai)
- 实现导航流程(Expo Router/React Navigation)
- 优化列表渲染或应用性能
- 评审React Native拉取请求
- 搭建项目架构或规范
Quick Reference Guide
快速参考指南
What Do You Need Help With?
你需要哪方面的帮助?
| Priority | Task | Reference |
|---|---|---|
| 🔴 PRIORITY 1: Code Quality (Check FIRST) | ||
| 1 | TypeScript strict, ESLint, Prettier, no any types | Quality & Hygiene ⭐ |
| 1 | Path aliases (@/), structured logging, error handling | Quality & Hygiene ⭐ |
| 1 | File naming, no inline styles, consistent imports | Quality & Hygiene ⭐ |
| 🟡 PRIORITY 2: Modern React/TypeScript | ||
| 2 | Functional components, Hooks rules, custom hooks | Modern React |
| 2 | useCallback, useMemo, React.memo optimization | Modern React |
| 2 | Type-safe props, generics, utility types | TypeScript Patterns |
| 2 | Discriminated unions, type guards, inference | TypeScript Patterns |
| 🟢 PRIORITY 3: React Native Architecture | ||
| 3 | Functional components, composition, HOCs | Component Patterns |
| 3 | Zustand patterns, Jotai atoms, persistence | State Management |
| 3 | Expo Router (file-based), React Navigation setup | Navigation |
| 3 | Platform checks, .ios/.android files, Platform module | Platform-Specific |
| 🔵 PRIORITY 4: Performance | ||
| 4 | FlatList optimization, getItemLayout, keyExtractor | Performance |
| 4 | Rerender prevention, React.memo, useMemo | Performance |
| 4 | Architecture violations (components, state, navigation) | Architecture Review |
| 4 | TypeScript quality, hooks violations, ESLint | Quality Review |
| 4 | List optimization, memory leaks, unnecessary rerenders | Performance Review |
| 优先级 | 任务 | 参考文档 |
|---|---|---|
| 🔴 优先级1:代码质量(首先检查) | ||
| 1 | TypeScript严格模式、ESLint、Prettier、禁止any类型 | 质量与规范 ⭐ |
| 1 | 路径别名(@/)、结构化日志、错误处理 | 质量与规范 ⭐ |
| 1 | 文件命名、禁止内联样式、统一导入顺序 | 质量与规范 ⭐ |
| 🟡 优先级2:现代React/TypeScript | ||
| 2 | 函数式组件、Hook规则、自定义Hook | 现代React |
| 2 | useCallback、useMemo、React.memo优化 | 现代React |
| 2 | 类型安全的Props、泛型、工具类型 | TypeScript模式 |
| 2 | 区分联合类型、类型守卫、类型推断 | TypeScript模式 |
| 🟢 优先级3:React Native架构 | ||
| 3 | 函数式组件、组合、高阶组件 | 组件模式 |
| 3 | Zustand模式、Jotai原子、状态持久化 | 状态管理 |
| 3 | Expo Router(基于文件)、React Navigation配置 | 导航 |
| 3 | 平台检测、.ios/.android文件、Platform模块 | 平台专属代码 |
| 🔵 优先级4:性能 | ||
| 4 | FlatList优化、getItemLayout、keyExtractor | 性能优化 |
| 4 | 防止重渲染、React.memo、useMemo | 性能优化 |
| 4 | 架构违规(组件、状态、导航) | 架构评审 |
| 4 | TypeScript质量、Hook违规、ESLint问题 | 质量评审 |
| 4 | 列表优化、内存泄漏、不必要的重渲染 | 性能评审 |
🔴 CRITICAL: Code Quality Rules (CHECK FIRST!)
🔴 关键:代码质量规则(首先检查!)
⚠️ MANDATORY QUALITY STANDARDS
⚠️ 强制性质量标准
ALWAYS enforce these BEFORE writing any code:
- TypeScript strict mode - Enable all strict compiler options
- ESLint + Prettier - Enforce linting and formatting
- No any types - Use proper types or unknown
- Path aliases - Use @/ for src/ imports
- Throw errors - NEVER suppress errors with try/catch + console.log
- Structured logging - Use logger utility, not raw console.log
- Error boundaries - Wrap components with ErrorBoundary
- Consistent imports - React first, then libraries, then local
- File naming - kebab-case for files, PascalCase for components
- No inline styles in JSX - Define styles outside component or use StyleSheet
Example: Enforce Quality First
typescript
// ✅ EXCELLENT: All quality rules enforced
// 1. TypeScript strict mode in tsconfig.json
// {
// "compilerOptions": {
// "strict": true,
// "noImplicitAny": true,
// "strictNullChecks": true
// }
// }
// 2. Import order: React → libraries → local
import React, { useCallback, useMemo } from 'react'; // React first
import { View, Text, StyleSheet } from 'react-native'; // Libraries
import { useStore } from '@/stores/user-store'; // Local with path alias
// 3. Type-safe props (no any)
interface UserProfileProps {
userId: string;
onPress?: () => void;
}
// 4. Functional component with typed props
export const UserProfile: React.FC<UserProfileProps> = ({ userId, onPress }) => {
const user = useStore((state) => state.users[userId]);
// 5. Throw errors (not console.log)
if (!user) {
throw new Error(`User not found: ${userId}`);
}
// 6. Structured logging
const handlePress = useCallback(() => {
logger.info('User profile pressed', { userId });
onPress?.();
}, [userId, onPress]);
return (
<View style={styles.container}>
<Text style={styles.name}>{user.name}</Text>
</View>
);
};
// 7. No inline styles - use StyleSheet
const styles = StyleSheet.create({
container: {
padding: 16,
},
name: {
fontSize: 18,
fontWeight: 'bold',
},
});在编写任何代码之前,必须先强制执行以下标准:
- TypeScript严格模式 - 启用所有严格编译选项
- ESLint + Prettier - 强制执行代码检查与格式化
- 禁止使用any类型 - 使用正确的类型或unknown
- 路径别名 - 导入src目录时使用@/
- 主动抛出错误 - 绝不使用try/catch + console.log压制错误
- 结构化日志 - 使用日志工具,而非原生console.log
- 错误边界 - 用ErrorBoundary包裹组件
- 统一导入顺序 - 先导入React,再导入库,最后导入本地文件
- 文件命名 - 文件使用短横线命名法,组件使用大驼峰命名法
- JSX中禁止内联样式 - 在组件外部定义样式或使用StyleSheet
示例:优先保障代码质量
typescript
// ✅ 优秀:遵循所有质量规则
// 1. tsconfig.json中启用TypeScript严格模式
// {
// "compilerOptions": {
// "strict": true,
// "noImplicitAny": true,
// "strictNullChecks": true
// }
// }
// 2. 导入顺序:React → 库 → 本地文件
import React, { useCallback, useMemo } from 'react'; // 先导入React
import { View, Text, StyleSheet } from 'react-native'; // 然后导入库
import { useStore } from '@/stores/user-store'; // 最后导入带路径别名的本地文件
// 3. 类型安全的Props(无any类型)
interface UserProfileProps {
userId: string;
onPress?: () => void;
}
// 4. 带类型Props的函数式组件
export const UserProfile: React.FC<UserProfileProps> = ({ userId, onPress }) => {
const user = useStore((state) => state.users[userId]);
// 5. 主动抛出错误(而非console.log)
if (!user) {
throw new Error(`User not found: ${userId}`);
}
// 6. 结构化日志
const handlePress = useCallback(() => {
logger.info('User profile pressed', { userId });
onPress?.();
}, [userId, onPress]);
return (
<View style={styles.container}>
<Text style={styles.name}>{user.name}</Text>
</View>
);
};
// 7. 禁止内联样式 - 使用StyleSheet
const styles = StyleSheet.create({
container: {
padding: 16,
},
name: {
fontSize: 18,
fontWeight: 'bold',
},
});⚠️ React Native Architecture Rules (AFTER Quality)
⚠️ React Native架构规则(代码质量达标后)
Choose Consistent State Management
选择统一的状态管理方案
Choose ONE state management solution per project:
Option 1: Zustand (Recommended for Simple State)
- ✅ Minimal boilerplate, hooks-based
- ✅ Perfect for app-level state (user, settings)
- ✅ Easy to test, TypeScript-friendly
Option 2: Jotai (Recommended for Atomic State)
- ✅ Atomic state management
- ✅ Perfect for complex derived state
- ✅ Better for fine-grained reactivity
Universal Rules (Both Solutions):
- ✅ Use selectors to prevent unnecessary rerenders
- ✅ Keep state normalized (no nested objects)
- ✅ Persist state with async storage adapters
- ✅ NEVER use Redux (too much boilerplate)
每个项目只能选择一种状态管理方案:
选项1:Zustand(推荐用于简单状态)
- ✅ 样板代码最少、基于Hook
- ✅ 非常适合应用级状态(用户、设置)
- ✅ 易于测试、对TypeScript友好
选项2:Jotai(推荐用于原子状态)
- ✅ 原子化状态管理
- ✅ 非常适合复杂的派生状态
- ✅ 更适合细粒度的响应式
通用规则(两种方案均适用):
- ✅ 使用选择器避免不必要的重渲染
- ✅ 保持状态规范化(无嵌套对象)
- ✅ 使用异步存储适配器持久化状态
- ✅ 绝不使用Redux(样板代码过多)
Choose ONE Navigation Solution
选择统一的导航方案
Option 1: Expo Router (Recommended)
- ✅ File-based routing (app/ directory)
- ✅ Built-in TypeScript support
- ✅ Automatic deep linking
Option 2: React Navigation 7
- ✅ More control over navigation structure
- ✅ Better for complex navigation flows
- ✅ Proven stability
选项1:Expo Router(推荐)
- ✅ 基于文件的路由(app/目录)
- ✅ 内置TypeScript支持
- ✅ 自动深度链接
选项2:React Navigation 7
- ✅ 对导航结构有更多控制权
- ✅ 更适合复杂的导航流程
- ✅ 稳定性久经考验
ALWAYS Use FlatList for Lists
列表必须使用FlatList
NEVER use ScrollView + map for lists:
typescript
// ❌ BAD: ScrollView + map (terrible performance)
<ScrollView>
{items.map(item => <Item key={item.id} {...item} />)}
</ScrollView>
// ✅ GOOD: FlatList with proper optimization
<FlatList
data={items}
renderItem={({ item }) => <Item {...item} />}
keyExtractor={(item) => item.id}
getItemLayout={(data, index) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * index,
index,
})}
removeClippedSubviews
maxToRenderPerBatch={10}
windowSize={11}
/>绝不能使用ScrollView + map来实现列表:
typescript
// ❌ 错误:ScrollView + map(性能极差)
<ScrollView>
{items.map(item => <Item key={item.id} {...item} />)}
</ScrollView>
// ✅ 正确:带优化配置的FlatList
<FlatList
data={items}
renderItem={({ item }) => <Item {...item} />}
keyExtractor={(item) => item.id}
getItemLayout={(data, index) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * index,
index,
})}
removeClippedSubviews
maxToRenderPerBatch={10}
windowSize={11}
/>Quick Examples: ❌ BAD vs ✅ GOOD
快速示例:❌ 错误写法 vs ✅ 正确写法
Example 1: Component Structure
示例1:组件结构
typescript
// ❌ BAD: Class component, inline styles, no types
class UserCard extends React.Component {
render() {
return (
<View style={{ padding: 10 }}>
<Text>{this.props.name}</Text>
</View>
);
}
}
// ✅ GOOD: Functional component, typed props, StyleSheet
interface UserCardProps {
name: string;
onPress?: () => void;
}
export const UserCard: React.FC<UserCardProps> = ({ name, onPress }) => {
return (
<View style={styles.container}>
<Text style={styles.name}>{name}</Text>
</View>
);
};
const styles = StyleSheet.create({
container: { padding: 10 },
name: { fontSize: 16 },
});typescript
// ❌ 错误:类组件、内联样式、无类型
class UserCard extends React.Component {
render() {
return (
<View style={{ padding: 10 }}>
<Text>{this.props.name}</Text>
</View>
);
}
}
// ✅ 正确:函数式组件、带类型Props、StyleSheet
interface UserCardProps {
name: string;
onPress?: () => void;
}
export const UserCard: React.FC<UserCardProps> = ({ name, onPress }) => {
return (
<View style={styles.container}>
<Text style={styles.name}>{name}</Text>
</View>
);
};
const styles = StyleSheet.create({
container: { padding: 10 },
name: { fontSize: 16 },
});Example 2: State Management
示例2:状态管理
typescript
// ❌ BAD: useState for app-level state
function App() {
const [user, setUser] = useState(null);
const [settings, setSettings] = useState({});
return <AppContent user={user} settings={settings} />;
}
// ✅ GOOD: Zustand for app-level state
import { create } from 'zustand';
interface AppState {
user: User | null;
settings: Settings;
setUser: (user: User | null) => void;
}
export const useAppStore = create<AppState>((set) => ({
user: null,
settings: {},
setUser: (user) => set({ user }),
}));
function App() {
const user = useAppStore((state) => state.user);
return <AppContent />;
}typescript
// ❌ 错误:用useState管理应用级状态
function App() {
const [user, setUser] = useState(null);
const [settings, setSettings] = useState({});
return <AppContent user={user} settings={settings} />;
}
// ✅ 正确:用Zustand管理应用级状态
import { create } from 'zustand';
interface AppState {
user: User | null;
settings: Settings;
setUser: (user: User | null) => void;
}
export const useAppStore = create<AppState>((set) => ({
user: null,
settings: {},
setUser: (user) => set({ user }),
}));
function App() {
const user = useAppStore((state) => state.user);
return <AppContent />;
}Example 3: List Rendering
示例3:列表渲染
typescript
// ❌ BAD: ScrollView + map
<ScrollView>
{users.map(user => (
<UserCard key={user.id} user={user} />
))}
</ScrollView>
// ✅ GOOD: FlatList with optimization
const ITEM_HEIGHT = 80;
<FlatList
data={users}
renderItem={({ item }) => <UserCard user={item} />}
keyExtractor={(item) => item.id}
getItemLayout={(_, index) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * index,
index,
})}
/>typescript
// ❌ 错误:ScrollView + map
<ScrollView>
{users.map(user => (
<UserCard key={user.id} user={user} />
))}
</ScrollView>
// ✅ 正确:带优化的FlatList
const ITEM_HEIGHT = 80;
<FlatList
data={users}
renderItem={({ item }) => <UserCard user={item} />}
keyExtractor={(item) => item.id}
getItemLayout={(_, index) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * index,
index,
})}
/>Common Mistakes to Avoid
需避免的常见错误
🔴 Critical Mistakes
🔴 严重错误
| Mistake | Why It's Wrong | Correct Approach |
|---|---|---|
| Using class components | Outdated, verbose, no hooks | Use functional components |
Using | Defeats TypeScript safety | Use proper types or |
| Inline styles in JSX | Poor performance, not reusable | Use |
| ScrollView + map for long lists | Memory issues, poor performance | Use |
| Direct console.log | Not structured, no filtering | Use logger utility |
| 错误 | 原因 | 正确做法 |
|---|---|---|
| 使用类组件 | 已过时、冗余、不支持Hook | 使用函数式组件 |
使用 | 失去TypeScript的类型安全保障 | 使用正确的类型或 |
| JSX中使用内联样式 | 性能差、不可复用 | 使用 |
| 长列表使用ScrollView + map | 内存问题、性能差 | 使用带优化配置的 |
| 直接使用console.log | 非结构化、无法过滤 | 使用日志工具 |
🟡 Warning-Level Mistakes
🟡 警告级错误
| Mistake | Why It's Wrong | Correct Approach |
|---|---|---|
| Not using path aliases | Ugly relative imports | Configure @/ alias |
| Missing keyExtractor | Poor list performance | Always provide keyExtractor |
| Not memoizing callbacks | Causes unnecessary rerenders | Use |
| Platform checks in render | Duplicated logic | Use Platform-specific files |
| Not cleaning up effects | Memory leaks | Return cleanup function |
| 错误 | 原因 | 正确做法 |
|---|---|---|
| 不使用路径别名 | 相对导入写法丑陋 | 配置@/别名 |
| 缺少keyExtractor | 列表性能差 | 始终提供keyExtractor |
| 不对回调函数进行memo化 | 导致不必要的重渲染 | 使用 |
| 在render中做平台检测 | 逻辑重复 | 使用平台专属文件 |
| 不清理副作用 | 内存泄漏 | 返回清理函数 |
🟢 Optimization Opportunities
🟢 优化机会
| Pattern | Issue | Optimization |
|---|---|---|
| Expensive calculations in render | Recalculates every render | Use |
| Props causing child rerenders | Child rerenders unnecessarily | Use |
| Large lists without optimization | Slow scrolling | Add |
| Deep object comparisons | Expensive checks | Use shallow equality |
| Large bundles | Slow app startup | Code splitting, lazy loading |
| 模式 | 问题 | 优化方案 |
|---|---|---|
| render中执行昂贵计算 | 每次render都会重新计算 | 使用 |
| Props导致子组件重渲染 | 子组件不必要地重渲染 | 使用 |
| 大型列表未做优化 | 滚动卡顿 | 添加 |
| 深度对象比较 | 检查成本高 | 使用浅比较 |
| 包体积过大 | 应用启动慢 | 代码分割、懒加载 |
Code Review Checklist
代码评审检查清单
Use this checklist when reviewing React Native code:
评审React Native代码时使用以下检查清单:
🔴 Critical Issues (Block Merge)
🔴 严重问题(阻止合并)
- TypeScript strict mode enabled
- No types used
any - ESLint + Prettier passing
- Path aliases (@/) configured and used
- Errors are thrown (not suppressed)
- Error boundaries wrap components
- FlatList used for lists (not ScrollView + map)
- File naming follows conventions (kebab-case)
- 已启用TypeScript严格模式
- 未使用类型
any - ESLint + Prettier检查通过
- 已配置并使用路径别名(@/)
- 错误被主动抛出(未被压制)
- 组件已用错误边界包裹
- 列表使用FlatList(而非ScrollView + map)
- 文件命名符合规范(短横线命名法)
🟡 Important Issues (Request Changes)
🟡 重要问题(要求修改)
- Functional components used (no class components)
- Props are properly typed
- Hooks rules followed (no conditionals, no loops)
- useCallback/useMemo used appropriately
- Styles use StyleSheet (no inline styles)
- State management is consistent (Zustand OR Jotai)
- Navigation is consistent (Expo Router OR React Navigation)
- Platform-specific code properly handled
- 使用函数式组件(无类组件)
- Props已正确添加类型
- 遵循Hook规则(无条件判断、无循环)
- 合理使用useCallback/useMemo
- 样式使用StyleSheet(无内联样式)
- 状态管理保持一致(仅使用Zustand或Jotai)
- 导航方案保持一致(仅使用Expo Router或React Navigation)
- 平台专属代码处理正确
🟢 Suggestions (Non-Blocking)
🟢 建议(不阻止合并)
- Custom hooks extract reusable logic
- React.memo used for expensive components
- getItemLayout provided for FlatList
- Effect cleanup functions provided
- Code splitting for large screens
- Images optimized and lazy loaded
- Accessibility props added (accessibilityLabel)
- 用自定义Hook提取可复用逻辑
- 对性能开销大的组件使用React.memo
- 为FlatList提供getItemLayout
- 副作用已添加清理函数
- 对大型页面进行代码分割
- 图片已优化并启用懒加载
- 添加了无障碍属性(accessibilityLabel)
Framework Versions
框架版本
Recommended Stack:
- React Native: 0.74+ (latest stable)
- Expo SDK: 51+ (if using Expo)
- TypeScript: 5.4+
- React: 18.2+
- Zustand: 4.5+ OR Jotai: 2.8+
- Expo Router: 3.5+ OR React Navigation: 7+
Development Tools:
- ESLint: 8.57+ with @react-native-community plugin
- Prettier: 3.2+
- Metro bundler (built-in)
- React DevTools: Latest
推荐技术栈:
- React Native: 0.74+(最新稳定版)
- Expo SDK: 51+(如果使用Expo)
- TypeScript: 5.4+
- React: 18.2+
- Zustand: 4.5+ 或 Jotai: 2.8+
- Expo Router: 3.5+ 或 React Navigation: 7+
开发工具:
- ESLint: 8.57+ 搭配@react-native-community插件
- Prettier: 3.2+
- Metro打包工具(内置)
- React DevTools: 最新版
Reference Files Structure
参考文件结构
All detailed patterns and examples are in reference files:
所有详细模式和示例均在参考文件中:
Language Patterns (TypeScript + React)
语言模式(TypeScript + React)
- Quality & Hygiene - TypeScript strict, ESLint, path aliases, error handling
- Modern React - Hooks, functional components, memoization
- TypeScript Patterns - Type-safe props, generics, utility types
- 质量与规范 - TypeScript严格模式、ESLint、路径别名、错误处理
- 现代React - Hook、函数式组件、Memoization
- TypeScript模式 - 类型安全的Props、泛型、工具类型
Framework Patterns (React Native)
框架模式(React Native)
- Component Patterns - Functional components, composition, HOCs
- State Management - Zustand, Jotai, persistence
- Navigation Patterns - Expo Router, React Navigation, deep linking
- Platform-Specific - iOS/Android differences, platform files
- Performance Patterns - FlatList optimization, rerender prevention
- 组件模式 - 函数式组件、组合、高阶组件
- 状态管理 - Zustand、Jotai、状态持久化
- 导航模式 - Expo Router、React Navigation、深度链接
- 平台专属代码 - iOS/Android差异、平台专属文件
- 性能优化模式 - FlatList优化、防止重渲染
Code Review Guidelines
代码评审指南
- Architecture Review - Component violations, state issues
- Quality Review - TypeScript quality, hooks violations
- Performance Review - List optimization, memory leaks
- 架构评审 - 组件违规、状态问题
- 质量评审 - TypeScript质量、Hook违规
- 性能评审 - 列表优化、内存泄漏