Skip to content
On this page

useService

数据异步状态,在承诺就绪后触发更改

基础用法

javascript
const { data,loading,error,run } = useService(target)
const { data,loading,error,run } = useService(target)

Loading Delay

通过设置 useLoadingDelayPlugin 插件,可以延迟 loading 变成 true 的时间,有效防止闪烁

javascript
useLoadingDelayPlugin({ delay: 300 })
useLoadingDelayPlugin({ delay: 300 })

轮询

通过设置 usePollingPlugin ,进入轮询模式,会定时触发 service 执行

javascript
usePollingPlugin({ errorRetryCount : -1, whenHidden : true, interval : 2000})
usePollingPlugin({ errorRetryCount : -1, whenHidden : true, interval : 2000})

防抖

通过设置 useDebouncePlugin 进入防抖模式,此时如果频繁触发 run 或者 runAsync,则会以防抖策略进行请求

javascript
useDebouncePlugin({ wait:1000, leading:false, trailing:true, maxWait:1500})
useDebouncePlugin({ wait:1000, leading:false, trailing:true, maxWait:1500})

节流

通过设置 useThrottlePlugin,进入节流模式,此时如果频繁触发 run 或者 runAsync,则会以节流策略进行请求

javascript
useThrottlePlugin({ wait:1000, leading:true, trailing:true})
useThrottlePlugin({ wait:1000, leading:true, trailing:true})

缓存 & SWR

如果设置了 useCachePlugin, 会将当前请求成功的数据缓存起来。下次组件初始化时,如果有缓存数据,我们会优先返回缓存数据,然后在背后发送新请求

javascript
useCachePlugin({cacheKey:'demo', cacheTime:300000, staleTime:0 })
useCachePlugin({cacheKey:'demo', cacheTime:300000, staleTime:0 })

API

javascript
useService<Data, Params extends any[]>(target: Target<Data, Params>): Result<Data, Params>;
useService<Data, Params extends any[]>(target: Target<Data, Params>,options: Options<Data, Params>): Result<Data, Params>;
useService<Data, Params extends any[]>(target: Target<Data, Params>,plugins: Plugin<Data, Params>[]): Result<Data, Params>;
useService<Data, Params extends any[]>(target: Target<Data, Params>,options: Options<Data, Params>, plugins: Plugin<Data, Params>[]): UseServiceResult<Data, Params>
useService<Data, Params extends any[]>(target: Target<Data, Params>): Result<Data, Params>;
useService<Data, Params extends any[]>(target: Target<Data, Params>,options: Options<Data, Params>): Result<Data, Params>;
useService<Data, Params extends any[]>(target: Target<Data, Params>,plugins: Plugin<Data, Params>[]): Result<Data, Params>;
useService<Data, Params extends any[]>(target: Target<Data, Params>,options: Options<Data, Params>, plugins: Plugin<Data, Params>[]): UseServiceResult<Data, Params>

Params

参数说明类型默认值
target必填,要解析的异步函数 (...args: any[]) => Promise<D>-
options可选,详见下面的 UseServiceOptionsUseServiceOptions-
plugins可选,插件UseServicePlugin-

UseServiceOptions

参数说明类型默认值
initialValue可选,默认值Data-
immediate可选,立即执行boolean-
onCancel可选,失败回调(onBefore?: (params: Params) => void-
onSuccess可选,成功回调(data: Data, params: Params) => void-
onError可选,失败回调(e: Error, params: Params) => void-
onFinally可选,失败回调(params: Params, data?: Data, e?: Error) => void-
onCancel可选,失败回调(reason?: any) => void-
params可选,可传递参数Params() => Params-

Result

参数说明类型默认值
data数据Ref<Data | undefined>-
loading加载状态Ref<boolean>-
error错误消息Ref<unknown>-
abort取消请求函数(reason?: any) => void-
runAsync异步发起请求函数(...params: Params) => Promise<Data>-
run发起请求函数(...params: Params) => void(param: (params: Params) => Params): void-
refresh使用上一次 params 刷新请求() => void-
refreshAsync异步刷新请求 () => Promise<Data>-