diff --git a/packages/runtime-vapor/src/component.ts b/packages/runtime-vapor/src/component.ts index d05f8ffbc..9564729a0 100644 --- a/packages/runtime-vapor/src/component.ts +++ b/packages/runtime-vapor/src/component.ts @@ -212,13 +212,13 @@ export class VaporComponentInstance implements GenericComponentInstance { // determine fallthrough this.hasFallthrough = false if (rawProps) { - if (rawProps.$) { + if (rawProps.$ || !comp.props) { this.hasFallthrough = true } else { // check if rawProps contains any keys not declared - const propsOptions = normalizePropsOptions(comp)[0]! + const propsOptions = normalizePropsOptions(comp)[0] for (const key in rawProps) { - if (!hasOwn(propsOptions, key)) { + if (!hasOwn(propsOptions!, key)) { this.hasFallthrough = true break } diff --git a/packages/runtime-vapor/src/componentProps.ts b/packages/runtime-vapor/src/componentProps.ts index 3ac42dbb3..e98418ac1 100644 --- a/packages/runtime-vapor/src/componentProps.ts +++ b/packages/runtime-vapor/src/componentProps.ts @@ -36,7 +36,7 @@ export function getPropsProxyHandlers( const emitsOptions = normalizeEmitsOptions(comp) const isProp = propsOptions ? (key: string) => hasOwn(propsOptions, key) : NO const castProp = propsOptions - ? (key: string, value: any, isAbsent = false) => + ? (value: any, key: string, isAbsent = false) => resolvePropValue( propsOptions, key as string, @@ -55,7 +55,7 @@ export function getPropsProxyHandlers( } if (key in target) { - return castProp(key, target[key as string]()) + return castProp(target[key as string](), key) } const dynamicSources = target.$ if (dynamicSources) { @@ -66,11 +66,11 @@ export function getPropsProxyHandlers( isDynamic = isFunction(source) source = isDynamic ? (source as Function)() : source if (hasOwn(source, key)) { - return castProp(key, isDynamic ? source[key] : source[key]()) + return castProp(isDynamic ? source[key] : source[key](), key) } } } - return castProp(key, undefined, true) + return castProp(undefined, key, true) } const propsHandlers = propsOptions @@ -109,7 +109,9 @@ export function getPropsProxyHandlers( } const attrsHandlers = { - get: (target, key: string) => getProp(target, key, false), + get: (target, key: string) => { + return getProp(target, key, false) + }, has: hasAttr, getOwnPropertyDescriptor(target, key: string) { if (hasAttr(target, key)) {