mirror of https://github.com/vuejs/core.git
chore: tweaks
This commit is contained in:
parent
a65da3aee9
commit
b8ceb89a46
|
@ -152,7 +152,6 @@ export const createFor = (
|
||||||
// render fallback nodes
|
// render fallback nodes
|
||||||
if (frag.fallback) {
|
if (frag.fallback) {
|
||||||
insert((frag.nodes[0] = frag.fallback()), parent!, parentAnchor)
|
insert((frag.nodes[0] = frag.fallback()), parent!, parentAnchor)
|
||||||
oldBlocks = []
|
|
||||||
isFallback = true
|
isFallback = true
|
||||||
}
|
}
|
||||||
} else if (!getKey) {
|
} else if (!getKey) {
|
||||||
|
@ -341,9 +340,9 @@ export const createFor = (
|
||||||
|
|
||||||
if (!isFallback) {
|
if (!isFallback) {
|
||||||
frag.nodes = [(oldBlocks = newBlocks)]
|
frag.nodes = [(oldBlocks = newBlocks)]
|
||||||
if (parentAnchor) {
|
if (parentAnchor) frag.nodes.push(parentAnchor)
|
||||||
frag.nodes.push(parentAnchor)
|
} else {
|
||||||
}
|
oldBlocks = []
|
||||||
}
|
}
|
||||||
setActiveSub(prevSub)
|
setActiveSub(prevSub)
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,38 +73,53 @@ export class DynamicFragment extends VaporFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.fallback) {
|
if (this.fallback) {
|
||||||
parent && remove(this.nodes, parent)
|
// set fallback for nested fragments
|
||||||
const scope = this.scope || (this.scope = new EffectScope())
|
const isFrag = isFragment(this.nodes)
|
||||||
scope.run(() => {
|
if (isFrag) {
|
||||||
// handle nested fragment
|
setFragmentFallback(this.nodes as VaporFragment, this.fallback)
|
||||||
if (isFragment(this.nodes)) {
|
}
|
||||||
ensureFallback(this.nodes, this.fallback!)
|
|
||||||
} else if (!isValidBlock(this.nodes)) {
|
|
||||||
this.nodes = this.fallback!() || []
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
parent && insert(this.nodes, parent, this.anchor)
|
if (!isValidBlock(this.nodes)) {
|
||||||
|
parent && remove(this.nodes, parent)
|
||||||
|
const scope = this.scope || (this.scope = new EffectScope())
|
||||||
|
scope.run(() => {
|
||||||
|
if (isFrag) {
|
||||||
|
// render fragment's fallback
|
||||||
|
renderFragmentFallback(this.nodes as VaporFragment)
|
||||||
|
} else {
|
||||||
|
this.nodes = this.fallback!() || []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
parent && insert(this.nodes, parent, this.anchor)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setActiveSub(prevSub)
|
setActiveSub(prevSub)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function ensureFallback(fragment: VaporFragment, fallback: BlockFn): void {
|
function setFragmentFallback(
|
||||||
if (!fragment.fallback) fragment.fallback = fallback
|
fragment: VaporFragment,
|
||||||
|
fallback: BlockFn | undefined,
|
||||||
|
): void {
|
||||||
|
if (!fragment.fallback) {
|
||||||
|
fragment.fallback = fallback
|
||||||
|
}
|
||||||
|
if (isFragment(fragment.nodes)) {
|
||||||
|
setFragmentFallback(fragment.nodes, fallback)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (fragment instanceof DynamicFragment) {
|
function renderFragmentFallback(fragment: VaporFragment): void {
|
||||||
|
if (fragment instanceof ForFragment) {
|
||||||
|
fragment.nodes[0] = [fragment.fallback!() || []] as Block[]
|
||||||
|
} else if (fragment instanceof DynamicFragment) {
|
||||||
const nodes = fragment.nodes
|
const nodes = fragment.nodes
|
||||||
if (isFragment(nodes)) {
|
if (isFragment(nodes)) {
|
||||||
ensureFallback(nodes, fallback)
|
renderFragmentFallback(nodes)
|
||||||
} else if (!isValidBlock(nodes)) {
|
} else {
|
||||||
fragment.update(fragment.fallback)
|
fragment.update(fragment.fallback)
|
||||||
}
|
}
|
||||||
} else if (fragment instanceof ForFragment) {
|
|
||||||
if (!isValidBlock(fragment.nodes[0])) {
|
|
||||||
fragment.nodes[0] = [fallback() || []] as Block[]
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// vdom slots
|
// vdom slots
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,16 +129,7 @@ export function createSlot(
|
||||||
fragment.fallback = fallback
|
fragment.fallback = fallback
|
||||||
// create and cache bound version of the slot to make it stable
|
// create and cache bound version of the slot to make it stable
|
||||||
// so that we avoid unnecessary updates if it resolves to the same slot
|
// so that we avoid unnecessary updates if it resolves to the same slot
|
||||||
fragment.update(
|
fragment.update(slot._bound || (slot._bound = () => slot(slotProps)))
|
||||||
slot._bound ||
|
|
||||||
(slot._bound = () => {
|
|
||||||
const slotContent = slot(slotProps)
|
|
||||||
if (slotContent instanceof DynamicFragment) {
|
|
||||||
slotContent.fallback = fallback
|
|
||||||
}
|
|
||||||
return slotContent
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
fragment.update(fallback)
|
fragment.update(fallback)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue