expect(s.children).toBe(staticContent)
})
+ // #6008
+ test('static (with text node as starting node)', () => {
+ const html = ` A <span>foo</span> B`
+ const { vnode, container } = mountWithHydration(html, () =>
+ createStaticVNode(` A <span>foo</span> B`, 3)
+ )
+ expect(vnode.el).toBe(container.firstChild)
+ expect(vnode.anchor).toBe(container.lastChild)
+ expect(`Hydration node mismatch`).not.toHaveBeenWarned()
+ })
+
+ test('static with content adoption', () => {
+ const html = ` A <span>foo</span> B`
+ const { vnode, container } = mountWithHydration(html, () =>
+ createStaticVNode(``, 3)
+ )
+ expect(vnode.el).toBe(container.firstChild)
+ expect(vnode.anchor).toBe(container.lastChild)
+ expect(vnode.children).toBe(html)
+ expect(`Hydration node mismatch`).not.toHaveBeenWarned()
+ })
+
test('element with text children', async () => {
const msg = ref('foo')
const { vnode, container } = mountWithHydration(
}
break
case Static:
- if (domType !== DOMNodeTypes.ELEMENT) {
+ if (domType !== DOMNodeTypes.ELEMENT && domType !== DOMNodeTypes.TEXT) {
nextNode = onMismatch()
} else {
// determine anchor, adopt content
const needToAdoptContent = !(vnode.children as string).length
for (let i = 0; i < vnode.staticCount!; i++) {
if (needToAdoptContent)
- vnode.children += (nextNode as Element).outerHTML
+ vnode.children +=
+ nextNode.nodeType === DOMNodeTypes.ELEMENT
+ ? (nextNode as Element).outerHTML
+ : (nextNode as Text).data
if (i === vnode.staticCount! - 1) {
vnode.anchor = nextNode
}