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 {