From ca82c329f06e64ac3d9f2cf6445d9f428d3e6f98 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 3 Jun 2019 19:58:12 +0800 Subject: [PATCH] wip: use typeFlag in slot normalization --- packages/runtime-core/src/componentSlots.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/runtime-core/src/componentSlots.ts b/packages/runtime-core/src/componentSlots.ts index 65ca98426a..bdc206d2cd 100644 --- a/packages/runtime-core/src/componentSlots.ts +++ b/packages/runtime-core/src/componentSlots.ts @@ -1,6 +1,7 @@ import { ComponentInstance } from './component' import { VNode, NormalizedChildren, normalizeVNode, VNodeChild } from './vnode' -import { isArray, isObject, isFunction } from '@vue/shared' +import { isArray, isFunction } from '@vue/shared' +import { SLOTS_CHILDREN } from './typeFlags' export type Slot = (...args: any[]) => VNode[] export type Slots = Readonly<{ @@ -23,14 +24,14 @@ export function resolveSlots( children: NormalizedChildren ) { let slots: Slots | void - if (isObject(children) && !isArray(children)) { + if (instance.vnode.shapeFlag & SLOTS_CHILDREN) { // pre-normalized slots object generated by compiler if ((children as any)._normalized) { slots = children as Slots } else { slots = {} - for (const key in children) { - let value = children[key] + for (const key in children as RawSlots) { + let value = (children as RawSlots)[key] if (isFunction(value)) { ;(slots as any)[key] = normalizeSlot(value) } else { @@ -43,9 +44,8 @@ export function resolveSlots( } } } - } else if (children != null) { - // Array, string or null. - // non object children passed to a component + } else if (children !== null) { + // non slot object children (direct value) passed to a component if (__DEV__) { // TODO show tip on using functions console.log('use function slots!') -- 2.47.3