diff --git a/packages/runtime-core/src/component.ts b/packages/runtime-core/src/component.ts index df3a6376989..238c718199d 100644 --- a/packages/runtime-core/src/component.ts +++ b/packages/runtime-core/src/component.ts @@ -396,9 +396,6 @@ export interface ComponentInternalInstance { refs: Data emit: EmitFn - attrsProxy: Data | null - slotsProxy: Slots | null - /** * used for keeping track of .once event handlers on components * @internal @@ -599,9 +596,6 @@ export function createComponentInstance( setupState: EMPTY_OBJ, setupContext: null, - attrsProxy: null, - slotsProxy: null, - // suspense related suspense, suspenseId: suspense ? suspense.pendingId : 0, @@ -1042,15 +1036,12 @@ const attrsProxyHandlers = __DEV__ * Dev-only */ function getSlotsProxy(instance: ComponentInternalInstance): Slots { - return ( - instance.slotsProxy || - (instance.slotsProxy = new Proxy(instance.slots, { - get(target, key: string) { - track(instance, TrackOpTypes.GET, '$slots') - return target[key] - }, - })) - ) + return new Proxy(instance.slots, { + get(target, key: string) { + track(instance, TrackOpTypes.GET, '$slots') + return target[key] + }, + }) } export function createSetupContext( @@ -1084,6 +1075,7 @@ export function createSetupContext( // We use getters in dev in case libs like test-utils overwrite instance // properties (overwrites should not be done in prod) let attrsProxy: Data + let slotsProxy: Slots return Object.freeze({ get attrs() { return ( @@ -1092,7 +1084,7 @@ export function createSetupContext( ) }, get slots() { - return getSlotsProxy(instance) + return slotsProxy || (slotsProxy = getSlotsProxy(instance)) }, get emit() { return (event: string, ...args: any[]) => instance.emit(event, ...args)