From a2f334d7105d71ae6c9b5c1c6275169302f837c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=B6=E8=BF=9C=E6=96=B9?= Date: Tue, 28 Mar 2023 17:22:23 +0800 Subject: [PATCH] feat(useAxios): added `onFinish` callback (#2829) --- packages/integrations/useAxios/index.test.ts | 11 +++++++++++ packages/integrations/useAxios/index.ts | 9 ++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/integrations/useAxios/index.test.ts b/packages/integrations/useAxios/index.test.ts index 942a4a60e2c..4d59e4d1e6e 100644 --- a/packages/integrations/useAxios/index.test.ts +++ b/packages/integrations/useAxios/index.test.ts @@ -300,4 +300,15 @@ describe('useAxios', () => { expect(isFinished.value).toBeTruthy() expect(isLoading.value).toBeFalsy() }) + + test('should call onFinish', async () => { + const onFinish = vitest.fn() + const { execute, isLoading, isFinished } = useAxios(url, config, { ...options, onFinish }) + expect(isLoading.value).toBeFalsy() + + await execute() + expect(onFinish).toHaveBeenCalled() + expect(isFinished.value).toBeTruthy() + expect(isLoading.value).toBeFalsy() + }) }) diff --git a/packages/integrations/useAxios/index.ts b/packages/integrations/useAxios/index.ts index 95641c9a9f9..d7824795455 100644 --- a/packages/integrations/useAxios/index.ts +++ b/packages/integrations/useAxios/index.ts @@ -109,6 +109,10 @@ export interface UseAxiosOptions { * Callback when success is caught. */ onSuccess?: (data: T) => void + /** + * Callback when request is finished. + */ + onFinish?: () => void } type OverallUseAxiosReturn = StrictUseAxiosReturn | EasyUseAxiosReturn @@ -215,7 +219,10 @@ export function useAxios, D = any>(...args: any[]) error.value = e options.onError?.(e) }) - .finally(() => loading(false)) + .finally(() => { + options.onFinish?.() + loading(false) + }) return { then } } if (options.immediate && url)