Skip to content

Commit 83ca206

Browse files
committed
version: @vue-hooks-plus/use-request 1.6.0
1 parent 155f727 commit 83ca206

File tree

4 files changed

+36
-2
lines changed

4 files changed

+36
-2
lines changed

packages/use-request/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@vue-hooks-plus/use-request",
3-
"version": "1.5.0",
3+
"version": "1.6.0",
44
"description": "Vue use-request hooks library",
55
"files": [
66
"dist",

packages/use-request/src/types.ts

+17
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@ export interface UseRequestPluginReturn<TData, TParams extends unknown[]> {
4040
onMutate?: (data: TData) => void
4141
}
4242

43+
export type RequestHook<TData = any, TParams extends any[] = any[]> = (
44+
service: UseRequestService<TData, TParams>,
45+
options: UseRequestOptions<TData, TParams, any>,
46+
plugins: UseRequestPlugin<TData, TParams>[],
47+
) => useRequestResult<TData, TParams>
48+
49+
50+
51+
export type UseRequestMiddleware<TData, TParams extends any[]> = (
52+
useRequestNext: RequestHook<TData, TParams>
53+
) => RequestHook<TData, TParams>
54+
4355
export interface UseRequestBasicOptions<TData, TParams extends unknown[]> {
4456
/**
4557
* Init data.
@@ -229,6 +241,11 @@ export interface UseRequestBasicOptions<TData, TParams extends unknown[]> {
229241
* If not set, the simple exponential backoff algorithm will be used by default, taking `1000 * 2 ** retryCount`, that is, waiting for 2s for the first retry, and 4s for the second retry. By analogy, if it is greater than 30s, take 30s.
230242
*/
231243
retryInterval?: number
244+
245+
/**
246+
* Middleware
247+
*/
248+
use?: UseRequestMiddleware<TData, TParams>[]
232249
}
233250

234251
export type UseRequestOptions<TData, TParams extends unknown[], TPlugin> = {

packages/use-request/src/useRequest.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import useThrottlePlugin from './plugins/useThrottlePlugin'
1111
import useRequestImplement from './useRequestImplement'
1212

1313
import { UseRequestOptions, UseRequestPlugin, UseRequestService } from './types'
14+
import { withArgs } from './utils/resolve-args'
1415

1516
function useRequest<
1617
TData,
@@ -42,7 +43,7 @@ function useRequest<
4243
useRetryPlugin
4344
]?.filter(Boolean)
4445

45-
return useRequestImplement<TData, TParams>(service, options, [
46+
return withArgs<TData, TParams>(useRequestImplement, options?.use)(service, options, [
4647
...(plugins || []),
4748
...BuiltInPlugins
4849
] as UseRequestPlugin<TData, TParams>[])
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { RequestHook, UseRequestMiddleware, UseRequestOptions, UseRequestPlugin, UseRequestService, useRequestResult } from '../types'
2+
3+
export const withArgs = <TData, TParams extends any[]>(hook: RequestHook<TData, TParams>, use?: UseRequestMiddleware<TData, TParams>[]) => {
4+
return function useRequestArgs(
5+
service: UseRequestService<TData, TParams>,
6+
options: UseRequestOptions<TData, TParams, any> = {},
7+
plugins: UseRequestPlugin<TData, TParams>[] = [],
8+
): useRequestResult<TData, TParams> {
9+
let next = hook
10+
const middleware = use || []
11+
for (let i = middleware.length; i--;) {
12+
next = middleware[i](next)
13+
}
14+
return next(service, options, plugins)
15+
}
16+
}

0 commit comments

Comments
 (0)