From: daiwei Date: Tue, 30 Sep 2025 07:08:40 +0000 (+0800) Subject: chore: sync https://github.com/vuejs/core/pull/13408/commits/d7a767290a046c6f38818628... X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d85b8bf098a50e8d987263d9dbe870a0c8b96136;p=thirdparty%2Fvuejs%2Fcore.git chore: sync https://github.com/vuejs/core/pull/13408/commits/d7a767290a046c6f38818628bf59bfd05675edf8#diff-0dd3482ecc41e155cfe3af80f16083b197377604944b94f44c5b9d933a5afa06 --- diff --git a/packages/runtime-vapor/src/fragment.ts b/packages/runtime-vapor/src/fragment.ts index 38e0740019..65eb1af494 100644 --- a/packages/runtime-vapor/src/fragment.ts +++ b/packages/runtime-vapor/src/fragment.ts @@ -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) } }