mirror of https://github.com/vuejs/core.git
parent
e075dfad5c
commit
7257e6a342
|
@ -48,6 +48,7 @@ export const hydrateOnVisible: HydrationStrategyFactory<
|
|||
}
|
||||
}, opts)
|
||||
forEach(el => {
|
||||
if (!(el instanceof Element)) return
|
||||
if (elementIsVisibleInViewport(el)) {
|
||||
hydrate()
|
||||
ob.disconnect()
|
||||
|
|
|
@ -11,9 +11,12 @@
|
|||
<script>
|
||||
const rootMargin = location.search.match(/rootMargin=(\d+)/)?.[1] ?? 0
|
||||
const isFragment = location.search.includes('?fragment')
|
||||
const isVIf = location.search.includes('?v-if')
|
||||
if (isFragment) {
|
||||
document.getElementById('app').innerHTML =
|
||||
`<!--[--><!--[--><span>one</span><!--]--><button>0</button><span>two</span><!--]-->`
|
||||
} else if (isVIf) {
|
||||
document.getElementById('app').innerHTML = `<!---->`
|
||||
}
|
||||
|
||||
window.isHydrated = false
|
||||
|
@ -24,6 +27,7 @@
|
|||
ref,
|
||||
onMounted,
|
||||
hydrateOnVisible,
|
||||
createCommentVNode,
|
||||
} = Vue
|
||||
|
||||
const Comp = {
|
||||
|
@ -39,7 +43,9 @@
|
|||
{ onClick: () => count.value++ },
|
||||
count.value,
|
||||
)
|
||||
if (isFragment) {
|
||||
if (isVIf) {
|
||||
return createCommentVNode('v-if', true)
|
||||
} else if (isFragment) {
|
||||
return [[h('span', 'one')], button, h('span', 'two')]
|
||||
} else {
|
||||
return button
|
||||
|
|
|
@ -65,6 +65,17 @@ describe('async component hydration strategies', () => {
|
|||
await assertHydrationSuccess()
|
||||
})
|
||||
|
||||
test('visible (root v-if) should not throw error', async () => {
|
||||
const spy = vi.fn()
|
||||
const currentPage = page()
|
||||
currentPage.on('pageerror', spy)
|
||||
await goToCase('visible', '?v-if')
|
||||
await page().waitForFunction(() => window.isRootMounted)
|
||||
expect(await page().evaluate(() => window.isHydrated)).toBe(false)
|
||||
expect(spy).toBeCalledTimes(0)
|
||||
currentPage.off('pageerror', spy)
|
||||
})
|
||||
|
||||
test('media query', async () => {
|
||||
await goToCase('media')
|
||||
await page().waitForFunction(() => window.isRootMounted)
|
||||
|
|
Loading…
Reference in New Issue