}
})
+ // TODO test mounted hook & watch callback buffering
const AsyncChild = createAsyncComponent(
() =>
new Promise(resolve => {
})
)
+ const AsyncChild2 = createAsyncComponent(
+ () =>
+ new Promise(resolve => {
+ setTimeout(() => {
+ resolve({
+ setup(props: { msg: string }) {
+ return () => h('div', props.msg)
+ }
+ })
+ }, 10)
+ })
+ )
+
const Mid = {
setup() {
return () =>
name: 'root',
setup() {
// TODO test fallback
- return () => h(Suspense, [msg.value, h(Mid)])
+ return () =>
+ h(Suspense, [msg.value, h(Mid), h(AsyncChild2, { msg: 'child 2' })])
}
}
await Promise.all(deps)
await nextTick()
- expect(serializeInner(root)).toBe(`<!---->hello<div>hello</div><!---->`)
+ expect(serializeInner(root)).toBe(
+ `<!---->hello<div>hello</div><div>child 2</div><!---->`
+ )
})
+
+ test.todo('fallback content update')
+
+ test.todo('content update before suspense resolve')
+
+ test.todo('unmount before suspense resolve')
+
+ test.todo('nested suspense')
})