|
|
@@ -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)
|