From 07c9517e69a97b8a157d1d3a93d5766fac4d4d1d Mon Sep 17 00:00:00 2001 From: wheat Date: Tue, 17 Jan 2023 00:23:06 -0500 Subject: [PATCH] fix(useRouteQuery): allow setting multiple route queries in same tick (#2646) --- packages/router/useRouteQuery/index.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/router/useRouteQuery/index.ts b/packages/router/useRouteQuery/index.ts index 9cd2d84eab9..81c4d9bedfd 100644 --- a/packages/router/useRouteQuery/index.ts +++ b/packages/router/useRouteQuery/index.ts @@ -3,6 +3,8 @@ import { computed, nextTick, unref } from 'vue-demi' import { useRoute, useRouter } from 'vue-router' import type { ReactiveRouteOptions } from '../_types' +let queue: Record = {} + export function useRouteQuery(name: string): Ref export function useRouteQuery(name: string, defaultValue?: T, options?: ReactiveRouteOptions): Ref export function useRouteQuery( @@ -24,8 +26,11 @@ export function useRouteQuery( return data }, set(v) { + queue[name] = v === defaultValue || v === null ? undefined : v + nextTick(() => { - router[unref(mode)]({ ...route, query: { ...route.query, [name]: v === defaultValue || v === null ? undefined : v } }) + router[unref(mode)]({ ...route, query: { ...route.query, ...queue } }) + nextTick(() => queue = {}) }) }, })