import {
h,
Fragment,
+ Teleport,
createVNode,
createCommentVNode,
openBlock,
expect(inner(root)).toBe('<div>World</div>')
})
+ //#3623
+ test('nested teleport unmount need exit the optimization mode', () => {
+ const target = nodeOps.createElement('div')
+ const root = nodeOps.createElement('div')
+
+ render(
+ (openBlock(),
+ createBlock('div', null, [
+ (openBlock(),
+ createBlock(
+ Teleport as any,
+ {
+ to: target
+ },
+ [
+ createVNode('div', null, [
+ (openBlock(),
+ createBlock(
+ Teleport as any,
+ {
+ to: target
+ },
+ [createVNode('div', null, 'foo')]
+ ))
+ ])
+ ]
+ ))
+ ])),
+ root
+ )
+ expect(inner(target)).toMatchInlineSnapshot(
+ `"<div><!--teleport start--><!--teleport end--></div><div>foo</div>"`
+ )
+ expect(inner(root)).toMatchInlineSnapshot(
+ `"<div><!--teleport start--><!--teleport end--></div>"`
+ )
+
+ render(null, root)
+ expect(inner(target)).toBe('')
+ })
+
// #3548
test('should not track dynamic children when the user calls a compiled slot inside template expression', () => {
const Comp = {
hostRemove(anchor!)
if (shapeFlag & ShapeFlags.ARRAY_CHILDREN) {
for (let i = 0; i < (children as VNode[]).length; i++) {
+ const child = (children as VNode[])[i]
unmount(
- (children as VNode[])[i],
+ child,
parentComponent,
parentSuspense,
true,
- optimized
+ !!child.dynamicChildren
)
}
}