diff --git a/packages/runtime-core/src/components/Portal.ts b/packages/runtime-core/src/components/Portal.ts index c1e0e5da..93676867 100644 --- a/packages/runtime-core/src/components/Portal.ts +++ b/packages/runtime-core/src/components/Portal.ts @@ -27,13 +27,14 @@ export const PortalImpl = { pc: patchChildren, pbc: patchBlockChildren, m: move, - c: insertComment, - o: { querySelector, setElementText } + o: { insert, querySelector, setElementText, createComment } }: RendererInternals ) { const targetSelector = n2.props && n2.props.target const { patchFlag, shapeFlag, children } = n2 if (n1 == null) { + // insert an empty node as the placeholder for the portal + insert((n2.el = createComment(`portal`)), container, anchor) if (__DEV__ && isString(targetSelector) && !querySelector) { warn( `Current renderer does not support string target for Portals. ` + @@ -61,6 +62,7 @@ export const PortalImpl = { warn('Invalid Portal target on mount:', target, `(${typeof target})`) } } else { + n2.el = n1.el // update content const target = (n2.target = n1.target)! if (patchFlag === PatchFlags.TEXT) { @@ -106,8 +108,6 @@ export const PortalImpl = { } } } - // insert an empty node as the placeholder for the portal - insertComment(n1, n2, container, anchor) } }