vue 3 异步请求统一封装核心是组合式函数 userequest,固定返回 data/loading/error 三元组状态,接收异步函数而非 url,内置错误分级处理、abortcontroller 清理及卸载防护。

Vue 3 中处理异步请求与错误捕获的统一封装,核心是用组合式函数(Composable)把“请求逻辑”“状态管理”和“错误处理”三者解耦并标准化,而不是在每个组件里重复写 try/catch、loading = true、error.value = … 这类样板代码。
统一状态结构:固定 data / loading / error 三元组
所有异步请求都应返回一致的状态结构,便于模板统一消费:
-
data:ref 包裹的响应数据,默认为
null或初始值(如空数组) -
loading:ref
,标识请求是否进行中 -
error:ref
,捕获并标准化错误信息
不建议直接暴露原始 Promise 或 throw 错误到模板层——这会让组件承担本该由组合函数处理的异常流控制。
封装 useRequest:接收函数而非 URL,提升灵活性
推荐以“传入异步函数”为设计入口,而非硬编码 URL 或请求库:
- 支持任意请求方式:axios、fetch、自定义 SDK,甚至模拟数据函数
- 便于单元测试:可直接传入 mock 函数,无需 mock 全局 fetch
- 天然支持参数透传和类型推导(尤其配合 TypeScript)
示例关键逻辑:

