diff --git a/packages/runtime-core/src/apiWatch.ts b/packages/runtime-core/src/apiWatch.ts index eaa699ce7..b7092248e 100644 --- a/packages/runtime-core/src/apiWatch.ts +++ b/packages/runtime-core/src/apiWatch.ts @@ -5,7 +5,8 @@ import { Ref, ComputedRef, ReactiveEffectOptions, - isReactive + isReactive, + ReactiveFlags } from '@vue/reactivity' import { SchedulerJob, queuePreFlushCb } from './scheduler' import { @@ -390,7 +391,11 @@ export function createPathGetter(ctx: any, path: string) { } function traverse(value: unknown, seen: Set = new Set()) { - if (!isObject(value) || seen.has(value)) { + if ( + !isObject(value) || + seen.has(value) || + (value as any)[ReactiveFlags.SKIP] + ) { return value } seen.add(value)