Просмотр исходного кода

fix(portal): fix portal placeholder text

Evan You 6 лет назад
Родитель
Сommit
439752822c
1 измененных файлов с 4 добавлено и 4 удалено
  1. 4 4
      packages/runtime-core/src/components/Portal.ts

+ 4 - 4
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)
   }
 }