Username:
{{ loading ? 'loading' : data }}
-
+ >Username:
{{ loading ? 'loading' : data }}
+
PollingInterval:{{ computedTime }}ms
Start
@@ -16,7 +16,7 @@
import { useRequest } from 'vue-hooks-plus'
function getUsername(): Promise {
- return new Promise((resolve, reject) => {
+ return new Promise(resolve => {
setTimeout(() => {
resolve(String(Date.now()))
}, 1000)
diff --git a/docs/en/hooks/useRequest/plugin.md b/docs/en/hooks/useRequest/plugin.md
index 67002f8b..e7143d4c 100644
--- a/docs/en/hooks/useRequest/plugin.md
+++ b/docs/en/hooks/useRequest/plugin.md
@@ -74,7 +74,7 @@ interface UseRequestPluginReturn {
servicePromise?: Promise
}
- onSuccess?: (data: TData, params: TParams) => void
+ onSuccess?: (data: TData, params: TParams, origin: Origin) => void
onError?: (e: Error, params: TParams) => void
onFinally?: (params: TParams, data?: TData, e?: Error) => void
onCancel?: () => void
diff --git a/docs/tsconfig.json b/docs/tsconfig.json
new file mode 100644
index 00000000..1a4b9202
--- /dev/null
+++ b/docs/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "extends": "../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./dist", //输出文件
+ "lib": ["esnext", "dom"],
+ "baseUrl": "./",
+ "rootDir": "./",
+ "types": ["node", "vitest", "vitest/globals"],
+ "paths": {
+ "vue-hooks-plus": ["../packages/hooks/src/index.ts"]
+ }
+ },
+ "include": ["src/**/*.ts", "demo/**/*.vue", "docs/global.d.ts"],
+ "exclude": ["node_modules", "dist", "lib", "es", "example", "test-utils/*"]
+}
diff --git a/packages/hooks/src/useRequest/Fetch.ts b/packages/hooks/src/useRequest/Fetch.ts
index a4d8bffd..85223e21 100644
--- a/packages/hooks/src/useRequest/Fetch.ts
+++ b/packages/hooks/src/useRequest/Fetch.ts
@@ -166,6 +166,9 @@ export default class Fetch {
// Format data
const formattedResult = this.options.formatResult ? this.options.formatResult(res) : res
+ const origin = {
+ data: res,
+ }
this.setState({
data: formattedResult,
error: undefined,
@@ -173,8 +176,7 @@ export default class Fetch {
})
// Request successful
this.options.onSuccess?.(formattedResult, params)
-
- this.runPluginHandler('onSuccess', formattedResult, params)
+ this.runPluginHandler('onSuccess', formattedResult, params, origin)
this.previousValidData = formattedResult
diff --git a/packages/hooks/src/useRequest/types.ts b/packages/hooks/src/useRequest/types.ts
index ee17e39e..8cec7cc6 100644
--- a/packages/hooks/src/useRequest/types.ts
+++ b/packages/hooks/src/useRequest/types.ts
@@ -8,11 +8,24 @@ export type UseRequestService = (
export type UseRequestSubscribe = () => void
+export type UseRequestOrigin = {
+ data: TData
+}
+
+export type UseRequestOriginSnapshot = {
+ loading: boolean
+ params?: TParams
+ originData?: TData
+ formatData?: TData
+ error?: Error | unknown
+}
+
export interface UseRequestFetchState {
loading: boolean
params?: TParams
data?: TData
error?: Error | unknown
+ snapshot?: UseRequestOriginSnapshot
}
export interface UseRequestPluginReturn {
@@ -21,9 +34,9 @@ export interface UseRequestPluginReturn {
params: TParams,
) =>
| ({
- stopNow?: boolean
- returnNow?: boolean
- } & Partial>)
+ stopNow?: boolean
+ returnNow?: boolean
+ } & Partial>)
| void
onRequest?: (
@@ -32,8 +45,14 @@ export interface UseRequestPluginReturn {
) => {
servicePromise?: Promise
}
-
- onSuccess?: (data: TData, params: TParams) => void
+ /**
+ *
+ * @param data Request result data or format data
+ * @param params Maually set the request params.
+ * @param origin Before format origin { data: TData }
+ * @returns Void
+ */
+ onSuccess?: (data: TData, params: TParams, origin: UseRequestOrigin) => void
onError?: (e: Error, params: TParams) => void
onFinally?: (params: TParams, data?: TData, e?: Error) => void
onCancel?: () => void
@@ -300,12 +319,12 @@ export interface useRequestResult<
data: Readonly<
Ref<
FormatResult extends false
- ? Initial extends false
- ? TData | undefined
- : TData
- : FormatResult extends (...args: any[]) => any
- ? ReturnType | undefined
- : FormatResult | undefined
+ ? Initial extends false
+ ? TData | undefined
+ : TData
+ : FormatResult extends (...args: any[]) => any
+ ? ReturnType | undefined
+ : FormatResult | undefined
>
>
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 84a19357..9f96ff5d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -175,10 +175,7 @@ importers:
unplugin-auto-import: 0.12.2
packages/sponsor:
- specifiers:
- immer: ^9.0.19
- dependencies:
- immer: 9.0.21
+ specifiers: {}
packages/types:
specifiers:
From 2e4f71eb0c51737ce98b483c460d8a8bdcf99797 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sun, 13 Apr 2025 09:38:27 +0800
Subject: [PATCH 2/2] version: 2.3.0-beta.6
---
packages/hooks/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/hooks/package.json b/packages/hooks/package.json
index d2c45b09..0eb61367 100644
--- a/packages/hooks/package.json
+++ b/packages/hooks/package.json
@@ -1,6 +1,6 @@
{
"name": "vue-hooks-plus",
- "version": "2.3.0-beta.5",
+ "version": "2.3.0-beta.6",
"description": "Vue hooks library",
"files": [
"dist",