test: test nested suspense & nested async deps
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { VNode, VNodeChild } from './vnode'
|
||||
import { VNode, VNodeChild, isVNode } from './vnode'
|
||||
import { ReactiveEffect, reactive, readonly } from '@vue/reactivity'
|
||||
import {
|
||||
PublicInstanceProxyHandlers,
|
||||
@@ -279,6 +279,12 @@ export function handleSetupResult(
|
||||
// setup returned an inline render function
|
||||
instance.render = setupResult as RenderFunction
|
||||
} else if (isObject(setupResult)) {
|
||||
if (__DEV__ && isVNode(setupResult)) {
|
||||
warn(
|
||||
`setup() should not return VNodes directly - ` +
|
||||
`return a render function instead.`
|
||||
)
|
||||
}
|
||||
// setup returned bindings.
|
||||
// assuming a render function compiled from template is present.
|
||||
instance.renderContext = reactive(setupResult)
|
||||
|
||||
@@ -871,6 +871,7 @@ export function createRenderer<
|
||||
hasUnresolvedAncestor = true
|
||||
break
|
||||
}
|
||||
parent = parent.parent
|
||||
}
|
||||
// no pending parent suspense, flush all jobs
|
||||
if (!hasUnresolvedAncestor) {
|
||||
@@ -1509,7 +1510,14 @@ export function createRenderer<
|
||||
return
|
||||
}
|
||||
if (__FEATURE_SUSPENSE__ && vnode.type === Suspense) {
|
||||
move((vnode.suspense as any).subTree, container, anchor)
|
||||
const suspense = vnode.suspense as SuspenseBoundary
|
||||
move(
|
||||
suspense.isResolved ? suspense.subTree : suspense.fallbackTree,
|
||||
container,
|
||||
anchor
|
||||
)
|
||||
suspense.container = container
|
||||
// suspense.anchor = anchor
|
||||
return
|
||||
}
|
||||
if (vnode.type === Fragment) {
|
||||
|
||||
@@ -124,6 +124,12 @@ export function createBlock(
|
||||
return vnode
|
||||
}
|
||||
|
||||
const knownVNodes = new WeakSet<VNode>()
|
||||
|
||||
export function isVNode(value: any): boolean {
|
||||
return knownVNodes.has(value)
|
||||
}
|
||||
|
||||
export function createVNode(
|
||||
type: VNodeTypes,
|
||||
props: { [key: string]: any } | null | 0 = null,
|
||||
@@ -198,6 +204,10 @@ export function createVNode(
|
||||
trackDynamicNode(vnode)
|
||||
}
|
||||
|
||||
if (__DEV__) {
|
||||
knownVNodes.add(vnode)
|
||||
}
|
||||
|
||||
return vnode
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user