diff --git a/packages/core/useUrlSearchParams/index.test.ts b/packages/core/useUrlSearchParams/index.test.ts index 2630576325b..adb54217a20 100644 --- a/packages/core/useUrlSearchParams/index.test.ts +++ b/packages/core/useUrlSearchParams/index.test.ts @@ -46,6 +46,16 @@ describe('useUrlSearchParams', () => { expect(params.foo).toBe('bar') }) + test('return initialValue', async () => { + const params = useUrlSearchParams(mode, { + initialValue: { + foo: 'bar', + }, + }) + + expect(params.foo).toBe('bar') + }) + test('update params on poststate event', async () => { const params = useUrlSearchParams(mode) expect(params.foo).toBeUndefined() diff --git a/packages/core/useUrlSearchParams/index.ts b/packages/core/useUrlSearchParams/index.ts index 7c54de9cf57..abd3c931e2c 100644 --- a/packages/core/useUrlSearchParams/index.ts +++ b/packages/core/useUrlSearchParams/index.ts @@ -44,7 +44,7 @@ export function useUrlSearchParams = UrlParams>( if (!window) return reactive(initialValue) as T - const state: Record = reactive(initialValue) + const state: Record = reactive({}) function getRawParams() { if (mode === 'history') { @@ -129,7 +129,11 @@ export function useUrlSearchParams = UrlParams>( if (mode !== 'history') useEventListener(window, 'hashchange', onChanged, false) - updateState(read()) + const initial = read() + if (initial.keys().next().value) + updateState(initial) + else + Object.assign(state, initialValue) return state as T }