From d7ec8fec39457f468441cb7278c2e41cb98b9a88 Mon Sep 17 00:00:00 2001 From: qingruiliu Date: Fri, 6 Dec 2024 15:13:16 +0800 Subject: [PATCH] chore: add onCancel for useRequest --- packages/hooks/src/useRequest/doc/basic/basic.en-US.md | 1 + packages/hooks/src/useRequest/doc/basic/basic.zh-CN.md | 1 + packages/hooks/src/useRequest/src/Fetch.ts | 5 ++++- packages/hooks/src/useRequest/src/types.ts | 1 + packages/hooks/src/useRequest/src/useRequestImplement.ts | 2 +- 5 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/hooks/src/useRequest/doc/basic/basic.en-US.md b/packages/hooks/src/useRequest/doc/basic/basic.en-US.md index 330719c1f7..9356e4a1be 100644 --- a/packages/hooks/src/useRequest/doc/basic/basic.en-US.md +++ b/packages/hooks/src/useRequest/doc/basic/basic.en-US.md @@ -62,6 +62,7 @@ Next, we will demonstrate the difference between `run` and `runAsync` through th - `onSuccess`: Triggered when the request is resolved - `onError`: Triggered when the request is rejected - `onFinally`: Triggered when the request is completed +- `onCancel`: Triggered when the request is canceled diff --git a/packages/hooks/src/useRequest/doc/basic/basic.zh-CN.md b/packages/hooks/src/useRequest/doc/basic/basic.zh-CN.md index 8dcfda3ac4..15b434f93c 100644 --- a/packages/hooks/src/useRequest/doc/basic/basic.zh-CN.md +++ b/packages/hooks/src/useRequest/doc/basic/basic.zh-CN.md @@ -62,6 +62,7 @@ const { loading, run, runAsync } = useRequest(service, { - `onSuccess`:请求成功触发 - `onError`:请求失败触发 - `onFinally`:请求完成触发 +- `onCancel`:请求取消触发 diff --git a/packages/hooks/src/useRequest/src/Fetch.ts b/packages/hooks/src/useRequest/src/Fetch.ts index 73ceee6004..594f46a9e2 100644 --- a/packages/hooks/src/useRequest/src/Fetch.ts +++ b/packages/hooks/src/useRequest/src/Fetch.ts @@ -135,12 +135,15 @@ export default class Fetch { }); } - cancel() { + cancel(isUnmount = false) { this.count += 1; this.setState({ loading: false, }); + if(!isUnmount){ + this.options.onCancel?.(); + } this.runPluginHandler('onCancel'); } diff --git a/packages/hooks/src/useRequest/src/types.ts b/packages/hooks/src/useRequest/src/types.ts index 442a2dff73..7dcf230fb3 100644 --- a/packages/hooks/src/useRequest/src/types.ts +++ b/packages/hooks/src/useRequest/src/types.ts @@ -46,6 +46,7 @@ export interface Options { onError?: (e: Error, params: TParams) => void; // formatResult?: (res: any) => TData; onFinally?: (params: TParams, data?: TData, e?: Error) => void; + onCancel?: () => void; defaultParams?: TParams; diff --git a/packages/hooks/src/useRequest/src/useRequestImplement.ts b/packages/hooks/src/useRequest/src/useRequestImplement.ts index d65cfba6cb..7ef8be35ed 100644 --- a/packages/hooks/src/useRequest/src/useRequestImplement.ts +++ b/packages/hooks/src/useRequest/src/useRequestImplement.ts @@ -56,7 +56,7 @@ function useRequestImplement( }); useUnmount(() => { - fetchInstance.cancel(); + fetchInstance.cancel(true); }); return {