wip: fix value casting

This commit is contained in:
Evan You 2024-12-04 23:47:28 +08:00
parent 33d1b8bcec
commit caca46bb73
No known key found for this signature in database
GPG Key ID: 00E9AB7A6704CE0A
2 changed files with 10 additions and 8 deletions

View File

@ -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
}

View File

@ -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)) {