Sfoglia il codice sorgente

refactor(compiler-vapor): decoupe insert and non-template

三咲智子 Kevin Deng 2 anni fa
parent
commit
22436ea341

+ 1 - 6
packages/compiler-vapor/src/generate.ts

@@ -318,12 +318,7 @@ function genChildren(children: IRDynamicChildren) {
   let offset = 0
   for (const [index, child] of Object.entries(children)) {
     const childrenLength = Object.keys(child.children).length
-    if (
-      child.dynamicFlags & DynamicFlag.NON_TEMPLATE ||
-      (child.dynamicFlags & DynamicFlag.INSERT &&
-        child.placeholder === null &&
-        childrenLength === 0)
-    ) {
+    if (child.dynamicFlags & DynamicFlag.NON_TEMPLATE) {
       offset--
       continue
     }

+ 1 - 1
packages/compiler-vapor/src/transforms/transformInterpolation.ts

@@ -27,7 +27,7 @@ export const transformInterpolation: NodeTransform = (node, ctx) => {
     )
   } else {
     const id = ctx.reference()
-    ctx.dynamic.dynamicFlags |= DynamicFlag.INSERT
+    ctx.dynamic.dynamicFlags |= DynamicFlag.INSERT | DynamicFlag.NON_TEMPLATE
     ctx.registerOperation({
       type: IRNodeTypes.CREATE_TEXT_NODE,
       loc: node.loc,

+ 1 - 2
packages/compiler-vapor/src/transforms/vIf.ts

@@ -42,6 +42,7 @@ export function processIf(
     dir.exp = createSimpleExpression(`true`, false, loc)
   }
 
+  context.dynamic.dynamicFlags |= DynamicFlag.NON_TEMPLATE
   if (dir.name === 'if') {
     const id = context.reference()
     context.dynamic.dynamicFlags |= DynamicFlag.INSERT
@@ -58,8 +59,6 @@ export function processIf(
       })
     }
   } else {
-    context.dynamic.dynamicFlags |= DynamicFlag.NON_TEMPLATE
-
     // check the adjacent v-if
     const parent = context.parent!
     const siblings = parent.node.children