mirror of https://github.com/vuejs/core.git
refactor(runtime-core): remove attrsProxy and slotsProxy from instance (#11390)
This commit is contained in:
parent
5df67e3675
commit
1b81d14bfd
|
@ -396,9 +396,6 @@ export interface ComponentInternalInstance {
|
||||||
refs: Data
|
refs: Data
|
||||||
emit: EmitFn
|
emit: EmitFn
|
||||||
|
|
||||||
attrsProxy: Data | null
|
|
||||||
slotsProxy: Slots | null
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* used for keeping track of .once event handlers on components
|
* used for keeping track of .once event handlers on components
|
||||||
* @internal
|
* @internal
|
||||||
|
@ -599,9 +596,6 @@ export function createComponentInstance(
|
||||||
setupState: EMPTY_OBJ,
|
setupState: EMPTY_OBJ,
|
||||||
setupContext: null,
|
setupContext: null,
|
||||||
|
|
||||||
attrsProxy: null,
|
|
||||||
slotsProxy: null,
|
|
||||||
|
|
||||||
// suspense related
|
// suspense related
|
||||||
suspense,
|
suspense,
|
||||||
suspenseId: suspense ? suspense.pendingId : 0,
|
suspenseId: suspense ? suspense.pendingId : 0,
|
||||||
|
@ -1042,15 +1036,12 @@ const attrsProxyHandlers = __DEV__
|
||||||
* Dev-only
|
* Dev-only
|
||||||
*/
|
*/
|
||||||
function getSlotsProxy(instance: ComponentInternalInstance): Slots {
|
function getSlotsProxy(instance: ComponentInternalInstance): Slots {
|
||||||
return (
|
return new Proxy(instance.slots, {
|
||||||
instance.slotsProxy ||
|
get(target, key: string) {
|
||||||
(instance.slotsProxy = new Proxy(instance.slots, {
|
track(instance, TrackOpTypes.GET, '$slots')
|
||||||
get(target, key: string) {
|
return target[key]
|
||||||
track(instance, TrackOpTypes.GET, '$slots')
|
},
|
||||||
return target[key]
|
})
|
||||||
},
|
|
||||||
}))
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createSetupContext(
|
export function createSetupContext(
|
||||||
|
@ -1084,6 +1075,7 @@ export function createSetupContext(
|
||||||
// We use getters in dev in case libs like test-utils overwrite instance
|
// We use getters in dev in case libs like test-utils overwrite instance
|
||||||
// properties (overwrites should not be done in prod)
|
// properties (overwrites should not be done in prod)
|
||||||
let attrsProxy: Data
|
let attrsProxy: Data
|
||||||
|
let slotsProxy: Slots
|
||||||
return Object.freeze({
|
return Object.freeze({
|
||||||
get attrs() {
|
get attrs() {
|
||||||
return (
|
return (
|
||||||
|
@ -1092,7 +1084,7 @@ export function createSetupContext(
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
get slots() {
|
get slots() {
|
||||||
return getSlotsProxy(instance)
|
return slotsProxy || (slotsProxy = getSlotsProxy(instance))
|
||||||
},
|
},
|
||||||
get emit() {
|
get emit() {
|
||||||
return (event: string, ...args: any[]) => instance.emit(event, ...args)
|
return (event: string, ...args: any[]) => instance.emit(event, ...args)
|
||||||
|
|
Loading…
Reference in New Issue