diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index 791ca9e5254..7e26e13dd0d 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -41,19 +41,20 @@ export const hydrateOnVisible: HydrationStrategyFactory< > = opts => (hydrate, forEach) => { const ob = new IntersectionObserver(entries => { for (const e of entries) { - if (!e.isIntersecting) continue - ob.disconnect() - hydrate() - break + if (e.isIntersecting) { + hydrate() + ob.disconnect() + return + } } }, opts) forEach(el => { if (elementIsVisibleInViewport(el)) { hydrate() ob.disconnect() - return false + } else { + ob.observe(el) } - ob.observe(el) }) return () => ob.disconnect() }