Skip to content

Commit

Permalink
fix(runtime-core): further fix slots _ctx check
Browse files Browse the repository at this point in the history
close #10724
  • Loading branch information
yyx990803 committed Apr 18, 2024
1 parent e51ca61 commit cde7f05
Showing 1 changed file with 7 additions and 17 deletions.
24 changes: 7 additions & 17 deletions packages/runtime-core/src/componentSlots.ts
Expand Up @@ -21,9 +21,7 @@ import { isKeepAlive } from './components/KeepAlive'
import { type ContextualRenderFn, withCtx } from './componentRenderContext'
import { isHmrUpdating } from './hmr'
import { DeprecationTypes, isCompatEnabled } from './compat/compatConfig'
import { toRaw } from '@vue/reactivity'
import { trigger } from '@vue/reactivity'
import { TriggerOpTypes } from '@vue/reactivity'
import { TriggerOpTypes, trigger } from '@vue/reactivity'
import { createInternalObject } from './internalObject'

export type Slot<T extends any = any> = (
Expand Down Expand Up @@ -167,26 +165,18 @@ export const initSlots = (
instance: ComponentInternalInstance,
children: VNodeNormalizedChildren,
) => {
const slots = (instance.slots = createInternalObject())
if (instance.vnode.shapeFlag & ShapeFlags.SLOTS_CHILDREN) {
const type = (children as RawSlots)._
if (type) {
// users can get the shallow readonly version of the slots object through `this.$slots`,
// we should avoid the proxy object polluting the slots of the internal instance
instance.slots = toRaw(children as InternalSlots)
extend(slots, children as InternalSlots)
// make compiler marker non-enumerable
def(instance.slots, '_', type)
def(slots, '_', type)
} else {
normalizeObjectSlots(
children as RawSlots,
(instance.slots = createInternalObject()),
instance,
)
}
} else {
instance.slots = createInternalObject()
if (children) {
normalizeVNodeSlots(instance, children)
normalizeObjectSlots(children as RawSlots, slots, instance)
}
} else if (children) {
normalizeVNodeSlots(instance, children)
}
}

Expand Down

0 comments on commit cde7f05

Please sign in to comment.