describe('SSR hydration', () => {
mockWarn()
+ beforeEach(() => {
+ document.body.innerHTML = ''
+ })
+
test('text', async () => {
const msg = ref('foo')
const { vnode, container } = mountWithHydration('foo', () => msg.value)
// excessive children removal
expect(`Hydration children mismatch`).toHaveBeenWarned()
})
+
+ test('Teleport target has empty children', () => {
+ const teleportContainer = document.createElement('div')
+ teleportContainer.id = 'teleport'
+ document.body.appendChild(teleportContainer)
+
+ mountWithHydration('<!--teleport start--><!--teleport end-->', () =>
+ h(Teleport, { to: '#teleport' }, [h('span', 'value')])
+ )
+ expect(teleportContainer.innerHTML).toBe(`<span>value</span>`)
+ expect(`Hydration children mismatch`).toHaveBeenWarned()
+ })
})
})
optimized
)
}
- ;(target as TeleportTargetElement)._lpa = nextSibling(
- vnode.targetAnchor as Node
- )
+ ;(target as TeleportTargetElement)._lpa =
+ vnode.targetAnchor && nextSibling(vnode.targetAnchor as Node)
}
}
return vnode.anchor && nextSibling(vnode.anchor as Node)