]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
wip: fix value casting
authorEvan You <evan@vuejs.org>
Wed, 4 Dec 2024 15:47:28 +0000 (23:47 +0800)
committerEvan You <evan@vuejs.org>
Wed, 4 Dec 2024 15:47:28 +0000 (23:47 +0800)
packages/runtime-vapor/src/component.ts
packages/runtime-vapor/src/componentProps.ts

index d05f8ffbcf24f6867359fe55521d458fe90785f3..9564729a0b617458843a790b8f14987433aa4257 100644 (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
           }
index 3ac42dbb30aa086255a4294b72a738acffaa5cb1..e98418ac10976fcba851543a62d2b57ec5fa2078 100644 (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)) {