From 4a882316a195d8da2031f8dae98b8e3dbf46a8d7 Mon Sep 17 00:00:00 2001 From: huiliangShen Date: Mon, 27 May 2024 20:14:09 +0800 Subject: [PATCH] fix(useRouteParams): support optional params (#3934) --- packages/router/useRouteParams/index.test.ts | 10 ++++++++++ packages/router/useRouteParams/index.ts | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/router/useRouteParams/index.test.ts b/packages/router/useRouteParams/index.test.ts index 58f0567b440..c6cbf548bf3 100644 --- a/packages/router/useRouteParams/index.test.ts +++ b/packages/router/useRouteParams/index.test.ts @@ -90,6 +90,16 @@ describe('useRouteParams', () => { expect(lang.value).toBe('pt-BR') }) + // docs @see https://router.vuejs.org/guide/essentials/route-matching-syntax.html#Optional-parameters + it('should return default value when use vue-router optional parameters', () => { + let route = getRoute({ page: '' }) + const router = { replace: (r: any) => route = r } as any + + const page: Ref = useRouteParams('page', 'default', { route, router }) + + expect(page.value).toBe('default') + }) + it('should reset state on scope dispose', async () => { let route = getRoute() const router = { replace: (r: any) => route = r } as any diff --git a/packages/router/useRouteParams/index.ts b/packages/router/useRouteParams/index.ts index 40061112f18..3de277dcc65 100644 --- a/packages/router/useRouteParams/index.ts +++ b/packages/router/useRouteParams/index.ts @@ -56,7 +56,7 @@ export function useRouteParams< get() { track() - return transform(param !== undefined ? param : toValue(defaultValue)) + return transform(param !== undefined && param !== '' ? param : toValue(defaultValue)) }, set(v) { if (param === v)