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,
|
fragment: VaporFragment,
|
||||||
fallback: BlockFn,
|
fallback: BlockFn,
|
||||||
): void {
|
): void {
|
||||||
// stop recursion if fragment has its own fallback
|
if (fragment.fallback) {
|
||||||
if (fragment.fallback) return
|
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)) {
|
if (isFragment(fragment.nodes)) {
|
||||||
setFragmentFallback(fragment.nodes, fallback)
|
setFragmentFallback(fragment.nodes, fragment.fallback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue