Skip to content

useAsyncState ​

管理异步操作的状态(loading/data/error),简化异步数据处理。

函数签名 ​

typescript
function useAsyncState<T>(
  promise: Promise<T> | (() => Promise<T>),
  initialState?: T,
  options?: AsyncStateOptions
): {
  state: Ref<T | undefined>
  isLoading: Ref<boolean>
  error: Ref<Error | null>
  execute: () => Promise<void>
}

interface AsyncStateOptions {
  immediate?: boolean        // 是否立即执行,默认 true
  onSuccess?: (data: T) => void
  onError?: (error: Error) => void
  resetOnExecute?: boolean   // 执行时是否重置状态,默认 true
}

参数 ​

参数名类型必填默认值说明
promisePromise<T> | () => Promise<T>是-Promise 或返回 Promise 的函数
initialStateT否undefined初始状态值
options.immediateboolean否true是否立即执行
options.onSuccessfunction否-成功回调
options.onErrorfunction否-错误回调
options.resetOnExecuteboolean否true执行时是否重置状态

返回值 ​

类型说明
{ state, isLoading, error, execute }异步状态对象

工作原理 ​

  1. 初始化:

    • 创建 state、isLoading、error 的响应式 ref
    • 如果 immediate 为 true,立即执行
  2. execute():

    • 设置 isLoading 为 true
    • 如果 resetOnExecute 为 true,清空 error
    • 执行 Promise:
      • 成功:更新 state,调用 onSuccess
      • 失败:更新 error,调用 onError
    • 设置 isLoading 为 false
  3. 状态管理:

    • state: 异步数据
    • isLoading: 加载中标志
    • error: 错误信息

简化异步数据获取的模板代码,自动管理加载和错误状态。