From: Evan You Date: Wed, 4 Dec 2024 15:47:28 +0000 (+0800) Subject: wip: fix value casting X-Git-Tag: v3.6.0-alpha.1~16^2~236 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=caca46bb73351e3e7377a4fcb95723296f06b315;p=thirdparty%2Fvuejs%2Fcore.git wip: fix value casting --- diff --git a/packages/runtime-vapor/src/component.ts b/packages/runtime-vapor/src/component.ts index d05f8ffbcf..9564729a0b 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 3ac42dbb30..e98418ac10 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)) {