diff --git a/packages/runtime-core/__tests__/apiWatch.spec.ts b/packages/runtime-core/__tests__/apiWatch.spec.ts index c9db3657367..8f5ce474c55 100644 --- a/packages/runtime-core/__tests__/apiWatch.spec.ts +++ b/packages/runtime-core/__tests__/apiWatch.spec.ts @@ -186,7 +186,7 @@ describe('api: watch', () => { (newVal, oldVal) => { called = true expect(newVal).toMatchObject([undefined, undefined]) - expect(oldVal).toBeUndefined() + expect(oldVal).toMatchObject([undefined, undefined]) }, { immediate: true } ) diff --git a/packages/runtime-core/src/apiWatch.ts b/packages/runtime-core/src/apiWatch.ts index 180843cf745..d047767f4c4 100644 --- a/packages/runtime-core/src/apiWatch.ts +++ b/packages/runtime-core/src/apiWatch.ts @@ -335,7 +335,9 @@ function doWatch( // pass undefined as the old value when it's changed for the first time oldValue === INITIAL_WATCHER_VALUE || (isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE) - ? undefined + ? isMultiSource + ? new Array((source as []).length).fill(undefined) + : undefined : oldValue, onCleanup ])