Expo 数据请求指南
为 Expo 应用提供从 API 请求到缓存、离线与身份验证的网络开发指导。
技能明确提示不要将密钥放入 EXPO_PUBLIC_、使用 SecureStore 保存令牌,并建议输入校验和服务器端秘密管理,数据流风险有一定透明度;但没有用户确认、最小权限、回滚方案或系统化依赖安全说明,部分认证示例仍依赖未定义的 refreshToken 和 isTokenExpired,因此扣分。
内容结构一致,涵盖基础请求、错误处理、重试、取消、离线和环境变量;但仅提供静态代码片段,没有针对关键路径的提交测试,部分行为依赖未说明的库版本和实现,网络异常、令牌刷新并发失败及响应格式异常的反馈仍不完整,因此静态评估不超过10分。
触发条件和使用场景较清晰,覆盖 Expo 原生、Web、React Query、SWR、认证和离线请求,并说明 Web loader 与原生场景的边界;但未提供中文支持、网络可达性或更细的非适用范围,且“任何网络工作”触发范围偏宽,因此扣分。
具备名称、描述、版本、MIT 许可、参考文档、决策树、常见错误和调用示例,仓库 README 还说明了安装、更新及官方文档作为事实来源;但选定技能没有变更日志、明确维护责任人、稳定性承诺、依赖安装说明或系统化 FAQ,部分参考内容注明为未来变化,因此扣分。
技能能直接给出 fetch、React Query、SWR、SecureStore、EXPO_PUBLIC_、loader、离线和取消的可改编示例,核心任务覆盖较完整;但没有静态可验证的实际输出、测试结果或与手工实现及替代方案的比较,若干示例需项目上下文和额外修订,因此按静态上限保守扣分。
证据主要是技能自身的说明、代码片段、仓库 README、许可证和有限的 CI 工作流;没有覆盖该技能关键路径的提交测试、第三方执行记录或多源交叉验证,因此仅给予有限可审计证据分。
- 示例中的 API、库版本和 Expo SDK 55+ loader 行为应以当前官方文档核对。
- 不要将任何高权限密钥、数据库密码或写权限 API 密钥放入 EXPO_PUBLIC_;loader 返回值会被序列化,避免泄露敏感数据。
- 认证、重试、离线持久化和令牌刷新代码仍需补充超时、输入校验、并发失败处理和可诊断日志。
- 该评估仅基于静态文件,未执行代码或测试。
这个 Skill 能做什么,适合哪些场景?
这是 expo/skills 集合中的一个开源框架技能,专注于 Expo 和 React Native 应用的数据请求与网络调试。它涵盖 fetch、React Query、SWR、错误处理、缓存、离线支持、身份验证、环境变量以及 Expo Router 数据加载器。技能偏好使用 fetch 或 expo/fetch,而不是 axios。它适合需要构建或排查网络功能的 Expo 项目,但源码没有提供测试套件或独立安装单元的说明。
指导代理编写 GET 和 POST fetch 请求,检查 HTTP 状态并解析响应;配置 React Query 查询、变更、缓存和重试;使用 SWR 或自定义 hooks 处理较简单的数据获取;设计 ApiError、指数退避、请求取消和离线方案;使用 expo-secure-store 保存令牌并实现刷新流程;配置 EXPO_PUBLIC_ 环境变量和不同环境的 API URL;根据场景查阅 Expo Router loaders 及离线取消相关参考文件。
- Expo 开发者需要为 React Native 页面接入 GET 或 POST API。
- 团队需要用 React Query 或 SWR 管理查询状态、缓存和重新获取。
- 开发者正在排查 HTTP 错误、无网络错误、超时或重试问题。
- 应用需要安全保存身份验证令牌并处理令牌刷新。
- 应用需要检测离线状态、缓存数据或支持离线优先流程。
- 团队需要为开发和生产环境配置不同的 API 地址。
这个 Skill 有哪些优点和局限?
- 覆盖 API 请求、缓存、错误处理、身份验证和离线场景。
- 提供可直接改写的 TypeScript/TSX 示例。
- 明确提醒不要把秘密放入 EXPO_PUBLIC_ 环境变量。
- 包含 Expo Router loaders、NetInfo 和 AbortController 的专项参考入口。
- 采用 MIT 许可证,并由 Expo 官方团队维护的技能集合发布。
- 技能本身是指导文档,不是可执行的数据请求库。
- README 主要描述整个 23 技能集合,未提供该子技能的独立安装流程。
- 源码未提供测试套件、性能基准或平台覆盖验证。
- 离线支持和 Expo Router loaders 的详细内容依赖未展示的 references 文件。
如何安装这个 Skill?
该技能属于 expo/skills 集合。使用 Skills CLI 安装全部 Expo 技能:npx skills@latest add expo/skills --skill '*';随后按 CLI 提示选择目标代理,并重启或刷新代理会话。Codex 可安装包含该技能的官方插件:codex plugin add expo@openai-curated。源码未说明仅安装 expo-data-fetching 子技能的独立命令或目标文件夹。
如何使用这个 Skill?
在已安装该技能的代理中提出具体网络任务,例如:“如何在 Expo 应用中使用 React Query 获取用户资料并处理错误?”或“如何为 Expo Router 页面配置数据加载?”技能会根据任务覆盖 fetch、React Query、SWR、SecureStore、环境变量、离线支持和 loaders 等方案;Expo Router loaders 参考限定为 Web、SDK 55+ 场景。
这个 Skill 与同类方案有什么区别?
相较于 axios,技能明确偏好 fetch 或 expo/fetch。对于数据状态管理,它建议复杂应用使用 React Query,较简单的需求使用 SWR 或自定义 hooks。