]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
chore: sync https://github.com/vuejs/core/pull/13408/commits/d7a767290a046c6f38818628...
authordaiwei <daiwei521@126.com>
Tue, 30 Sep 2025 07:08:40 +0000 (15:08 +0800)
committerdaiwei <daiwei521@126.com>
Tue, 30 Sep 2025 07:08:40 +0000 (15:08 +0800)
packages/runtime-vapor/src/fragment.ts

index 38e074001930828cf53378c12b77d49ebe78fc50..65eb1af494cee96a8a802f5b65624ad56c700690 100644 (file)
@@ -203,12 +203,23 @@ export function setFragmentFallback(
   fragment: VaporFragment,
   fallback: BlockFn,
 ): void {
-  // stop recursion if fragment has its own fallback
-  if (fragment.fallback) return
+  if (fragment.fallback) {
+    const originalFallback = fragment.fallback
+    // if the original fallback also renders invalid blocks,
+    // this ensures proper fallback chaining
+    fragment.fallback = () => {
+      const fallbackNodes = originalFallback()
+      if (isValidBlock(fallbackNodes)) {
+        return fallbackNodes
+      }
+      return fallback()
+    }
+  } else {
+    fragment.fallback = fallback
+  }
 
-  fragment.fallback = fallback
   if (isFragment(fragment.nodes)) {
-    setFragmentFallback(fragment.nodes, fallback)
+    setFragmentFallback(fragment.nodes, fragment.fallback)
   }
 }