用途:该技能用于 Expo/React Native 项目中所有网络相关工作,包括 API 请求、数据获取、缓存、离线处理与网络调试。
主要能力:基础 fetch 的 GET/POST 用法与响应状态检查;React Query(TanStack Query)的 QueryClientProvider、useQuery、useMutation 与失效重取;错误处理(自定义 ApiError、网络错误区分、指数退避重试);鉴权(expo-secure-store 存 token、Bearer 头、token 刷新流程);离线支持(NetInfo 监听网络状态、onlineManager 同步、离线暂停在线恢复);环境变量(EXPO_PUBLIC_ 前缀、.env.development/.env.production、TypeScript 类型声明);请求取消(AbortController,React Query 自动取消)。
使用方式:按决策树选择方案——基础请求用 fetch 加错误处理;需要缓存与状态管理时复杂应用用 React Query,简单需求用 SWR 或自定义 hooks;鉴权用 expo-secure-store 并实现刷新;离线用 NetInfo 与 React Query 持久化;环境配置用 EXPO_PUBLIC_ 变量。偏好避免 axios,优先使用 expo/fetch。Expo Router 路由级数据加载(useLoaderData,Web、SDK 55+)见 references/expo-router-loaders.md。
适用场景:React Native/Expo 应用的 API 集成、缓存策略、离线优先、鉴权 token 管理、多环境 API 地址配置、网络故障排查。
限制与注意:仅 EXPO_PUBLIC_ 前缀变量会暴露到客户端包,且构建时内联而非运行时,修改 .env 后需重启开发服务器;切勿将密钥放入 EXPO_PUBLIC_ 变量,服务端密钥应使用无前缀变量且仅限 API 路由;token 不应存于 AsyncStorage,应使用 SecureStore。具体版本兼容与更多细节以官方资料为准,部分内容暂未提供。