theone-react-native-standards

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

TheOne 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?

你需要哪方面的帮助?

PriorityTaskReference
🔴 PRIORITY 1: Code Quality (Check FIRST)
1TypeScript strict, ESLint, Prettier, no any typesQuality & Hygiene
1Path aliases (@/), structured logging, error handlingQuality & Hygiene
1File naming, no inline styles, consistent importsQuality & Hygiene
🟡 PRIORITY 2: Modern React/TypeScript
2Functional components, Hooks rules, custom hooksModern React
2useCallback, useMemo, React.memo optimizationModern React
2Type-safe props, generics, utility typesTypeScript Patterns
2Discriminated unions, type guards, inferenceTypeScript Patterns
🟢 PRIORITY 3: React Native Architecture
3Functional components, composition, HOCsComponent Patterns
3Zustand patterns, Jotai atoms, persistenceState Management
3Expo Router (file-based), React Navigation setupNavigation
3Platform checks, .ios/.android files, Platform modulePlatform-Specific
🔵 PRIORITY 4: Performance
4FlatList optimization, getItemLayout, keyExtractorPerformance
4Rerender prevention, React.memo, useMemoPerformance
4Architecture violations (components, state, navigation)Architecture Review
4TypeScript quality, hooks violations, ESLintQuality Review
4List optimization, memory leaks, unnecessary rerendersPerformance Review
优先级任务参考文档
🔴 优先级1:代码质量(首先检查)
1TypeScript严格模式、ESLint、Prettier、禁止any类型质量与规范
1路径别名(@/)、结构化日志、错误处理质量与规范
1文件命名、禁止内联样式、统一导入顺序质量与规范
🟡 优先级2:现代React/TypeScript
2函数式组件、Hook规则、自定义Hook现代React
2useCallback、useMemo、React.memo优化现代React
2类型安全的Props、泛型、工具类型TypeScript模式
2区分联合类型、类型守卫、类型推断TypeScript模式
🟢 优先级3:React Native架构
3函数式组件、组合、高阶组件组件模式
3Zustand模式、Jotai原子、状态持久化状态管理
3Expo Router(基于文件)、React Navigation配置导航
3平台检测、.ios/.android文件、Platform模块平台专属代码
🔵 优先级4:性能
4FlatList优化、getItemLayout、keyExtractor性能优化
4防止重渲染、React.memo、useMemo性能优化
4架构违规(组件、状态、导航)架构评审
4TypeScript质量、Hook违规、ESLint问题质量评审
4列表优化、内存泄漏、不必要的重渲染性能评审

🔴 CRITICAL: Code Quality Rules (CHECK FIRST!)

🔴 关键:代码质量规则(首先检查!)

⚠️ MANDATORY QUALITY STANDARDS

⚠️ 强制性质量标准

ALWAYS enforce these BEFORE writing any code:
  1. TypeScript strict mode - Enable all strict compiler options
  2. ESLint + Prettier - Enforce linting and formatting
  3. No any types - Use proper types or unknown
  4. Path aliases - Use @/ for src/ imports
  5. Throw errors - NEVER suppress errors with try/catch + console.log
  6. Structured logging - Use logger utility, not raw console.log
  7. Error boundaries - Wrap components with ErrorBoundary
  8. Consistent imports - React first, then libraries, then local
  9. File naming - kebab-case for files, PascalCase for components
  10. 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',
  },
});
在编写任何代码之前,必须先强制执行以下标准:
  1. TypeScript严格模式 - 启用所有严格编译选项
  2. ESLint + Prettier - 强制执行代码检查与格式化
  3. 禁止使用any类型 - 使用正确的类型或unknown
  4. 路径别名 - 导入src目录时使用@/
  5. 主动抛出错误 - 绝不使用try/catch + console.log压制错误
  6. 结构化日志 - 使用日志工具,而非原生console.log
  7. 错误边界 - 用ErrorBoundary包裹组件
  8. 统一导入顺序 - 先导入React,再导入库,最后导入本地文件
  9. 文件命名 - 文件使用短横线命名法,组件使用大驼峰命名法
  10. 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

🔴 严重错误

MistakeWhy It's WrongCorrect Approach
Using class componentsOutdated, verbose, no hooksUse functional components
Using
any
type
Defeats TypeScript safetyUse proper types or
unknown
Inline styles in JSXPoor performance, not reusableUse
StyleSheet.create()
ScrollView + map for long listsMemory issues, poor performanceUse
FlatList
with optimization
Direct console.logNot structured, no filteringUse logger utility
错误原因正确做法
使用类组件已过时、冗余、不支持Hook使用函数式组件
使用
any
类型
失去TypeScript的类型安全保障使用正确的类型或
unknown
JSX中使用内联样式性能差、不可复用使用
StyleSheet.create()
长列表使用ScrollView + map内存问题、性能差使用带优化配置的
FlatList
直接使用console.log非结构化、无法过滤使用日志工具

🟡 Warning-Level Mistakes

🟡 警告级错误

MistakeWhy It's WrongCorrect Approach
Not using path aliasesUgly relative importsConfigure @/ alias
Missing keyExtractorPoor list performanceAlways provide keyExtractor
Not memoizing callbacksCauses unnecessary rerendersUse
useCallback
Platform checks in renderDuplicated logicUse Platform-specific files
Not cleaning up effectsMemory leaksReturn cleanup function
错误原因正确做法
不使用路径别名相对导入写法丑陋配置@/别名
缺少keyExtractor列表性能差始终提供keyExtractor
不对回调函数进行memo化导致不必要的重渲染使用
useCallback
在render中做平台检测逻辑重复使用平台专属文件
不清理副作用内存泄漏返回清理函数

🟢 Optimization Opportunities

🟢 优化机会

PatternIssueOptimization
Expensive calculations in renderRecalculates every renderUse
useMemo
Props causing child rerendersChild rerenders unnecessarilyUse
React.memo
Large lists without optimizationSlow scrollingAdd
getItemLayout
Deep object comparisonsExpensive checksUse shallow equality
Large bundlesSlow app startupCode splitting, lazy loading
模式问题优化方案
render中执行昂贵计算每次render都会重新计算使用
useMemo
Props导致子组件重渲染子组件不必要地重渲染使用
React.memo
大型列表未做优化滚动卡顿添加
getItemLayout
深度对象比较检查成本高使用浅比较
包体积过大应用启动慢代码分割、懒加载

Code Review Checklist

代码评审检查清单

Use this checklist when reviewing React Native code:
评审React Native代码时使用以下检查清单:

🔴 Critical Issues (Block Merge)

🔴 严重问题(阻止合并)

  • TypeScript strict mode enabled
  • No
    any
    types used
  • 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违规
  • 性能评审 - 列表优化、内存泄漏