University Ranking Frontend 深度分析(第二部分):状态管理、React Query 和主题架构
这是我们 University Ranking Frontend 代码深度分析的第二部分。确保你已经阅读了 https://xiaruize.org/zh/post/university-ranking-frontend/ 和 https://xiaruize.org/zh/post/university-ranking-frontend-part-1/。 概述 在第二部分,我们将探索: ThemeContext - 实现带平台特定持久化的主题切换 LanguageContext - 管理国际化和语言偏好 RankingsProvider - 使用 React Query 进行后台数据同步 React Query Hooks - 构建可重用的数据获取模式 平台特定优化 - 不同方式处理 iOS、Android 和 Web ThemeContext:主题管理 ThemeContext 管理整个应用的视觉主题——浅色模式、深色模式或自动(跟随系统偏好)。以下是完整的实现: 主题对象 export const lightTheme = { background: Platform.OS == 'android' ? '#ffffff' : '#f8f9fa', surface: '#ffffff', surfaceSecondary: '#f1f3f5', primary: '#4a90e2', text: '#2c3e50', textSecondary: '#6c757d', border: '#e1e5e9', card: '#ffffff', input: '#ffffff', shadow: '#000', }; export const darkTheme = { background: Platform.OS == 'android' ? '#121212' : '#121212', surface: '#1e1e1e', surfaceSecondary: '#434343ff', primary: '#4a90e2', text: '#ffffff', textSecondary: '#b0b0b0', border: '#333333', card: '#2a2a2a', input: '#2a2a2a', shadow: '#000', }; 注意: background 在 Android 和 iOS 之间不同。这是 Vibe Coding 的实际应用——当 AI 生成平台特定代码时,它经常发现手动编码可能错过的这种细微差别。 ...