From: daiwei Date: Thu, 14 Aug 2025 06:24:43 +0000 (+0800) Subject: chore: improve vdom slot hydration handling X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=806779178299a161ca650b82242c44ca352c2c5d;p=thirdparty%2Fvuejs%2Fcore.git chore: improve vdom slot hydration handling --- diff --git a/packages/runtime-vapor/src/vdomInterop.ts b/packages/runtime-vapor/src/vdomInterop.ts index 74982b4d57..fe12fddbfd 100644 --- a/packages/runtime-vapor/src/vdomInterop.ts +++ b/packages/runtime-vapor/src/vdomInterop.ts @@ -388,7 +388,12 @@ function renderVDOMSlot( } if (isValidSlot) { if (isHydrating) { - hydrateVNode(vnode!, parentComponent as any) + // if slot content is a vnode, hydrate it + // otherwise, it is a vapor Block that is already hydrated during + // renderSlot + if (isVNode(vnode)) { + hydrateVNode(vnode!, parentComponent as any) + } } else { if (fallbackNodes) { remove(fallbackNodes, parentNode) @@ -416,7 +421,9 @@ function renderVDOMSlot( fallbackNodes = fallback(internals, parentComponent) if (isHydrating) { // hydrate fallback - hydrateVNode(fallbackNodes as any, parentComponent as any) + if (isVNode(vnode)) { + hydrateVNode(fallbackNodes as any, parentComponent as any) + } } else { // mount fallback if (oldVNode) { @@ -516,5 +523,6 @@ function hydrateVNode( null, false, ) - if (nextNode) advanceHydrationNode(nextNode) + if (nextNode) setCurrentHydrationNode(nextNode) + else advanceHydrationNode(node) }