]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(runtime-vapor): don't overridden attrs in static template
author三咲智子 Kevin Deng <sxzz@sxzz.moe>
Wed, 13 Nov 2024 07:45:28 +0000 (15:45 +0800)
committer三咲智子 Kevin Deng <sxzz@sxzz.moe>
Wed, 13 Nov 2024 08:16:21 +0000 (16:16 +0800)
closes #253

packages/runtime-vapor/src/apiCreateComponent.ts
packages/runtime-vapor/src/apiRender.ts
packages/runtime-vapor/src/componentAttrs.ts

index 74ce6e4055da879e1361b58ab8ff46108b912f90..84218aa76afcc96cdb8557edbb6783cd8b456500 100644 (file)
@@ -23,7 +23,7 @@ export function createComponent(
     slots,
     once,
   )
-  setupComponent(instance, singleRoot)
+  setupComponent(instance)
 
   // register sub-component with current component for lifecycle management
   current.comps.add(instance)
index f045c552bc72c2a10be8171245b693896ffe63ba..7dd97193efded52812705cd74a133990d098865b 100644 (file)
@@ -30,10 +30,7 @@ export type Fragment = {
   [fragmentKey]: true
 }
 
-export function setupComponent(
-  instance: ComponentInternalInstance,
-  singleRoot: boolean = false,
-): void {
+export function setupComponent(instance: ComponentInternalInstance): void {
   if (__DEV__) {
     startMeasure(instance, `init`)
   }
@@ -97,7 +94,7 @@ export function setupComponent(
       block = []
     }
     instance.block = block
-    if (singleRoot) fallThroughAttrs(instance)
+    fallThroughAttrs(instance)
     return block
   })
   reset()
index 3f0503b69735cda43979b359c0dcd53c319cc98b..5322b5f3208dbd8522c2d5a880fde6a87b61a058 100644 (file)
@@ -72,6 +72,12 @@ export function fallThroughAttrs(instance: ComponentInternalInstance): void {
   if (inheritAttrs === false) return
 
   if (block instanceof Element) {
-    renderEffect(() => setDynamicProps(block, instance.attrs))
+    // attrs in static template
+    const initial: Record<string, string> = {}
+    for (let i = 0; i < block.attributes.length; i++) {
+      const attr = block.attributes[i]
+      initial[attr.name] = attr.value
+    }
+    renderEffect(() => setDynamicProps(block, instance.attrs, initial))
   }
 }