mirror of https://github.com/vuejs/core.git
fix(runtime-vapor): improve fallback handling support chaining
This commit is contained in:
parent
5b4673fccd
commit
d7a767290a
File diff suppressed because it is too large
Load Diff
|
@ -102,12 +102,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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue