Skip to content

Commit

Permalink
fix(ssr): fix unintended error on Teleport hydration mismatch (#1271)
Browse files Browse the repository at this point in the history
fix #1235
  • Loading branch information
underfin committed Jun 12, 2020
1 parent d863ce7 commit c463a71
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
16 changes: 16 additions & 0 deletions packages/runtime-core/__tests__/hydration.spec.ts
Expand Up @@ -37,6 +37,10 @@ const triggerEvent = (type: string, el: Element) => {
describe('SSR hydration', () => {
mockWarn()

beforeEach(() => {
document.body.innerHTML = ''
})

test('text', async () => {
const msg = ref('foo')
const { vnode, container } = mountWithHydration('foo', () => msg.value)
Expand Down Expand Up @@ -686,5 +690,17 @@ describe('SSR hydration', () => {
// 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()
})
})
})
5 changes: 2 additions & 3 deletions packages/runtime-core/src/components/Teleport.ts
Expand Up @@ -314,9 +314,8 @@ function hydrateTeleport(
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)
Expand Down

0 comments on commit c463a71

Please sign in to comment.