diff --git a/packages/compiler-vapor/src/ir.ts b/packages/compiler-vapor/src/ir.ts index 40b79cf6e..f79c87841 100644 --- a/packages/compiler-vapor/src/ir.ts +++ b/packages/compiler-vapor/src/ir.ts @@ -200,9 +200,8 @@ export interface IRDynamicInfo { id: number | null dynamicFlags: DynamicFlag placeholder: number | null - children: IRDynamicChildren + children: IRDynamicInfo[] } -export type IRDynamicChildren = Record export type IRExpression = SimpleExpressionNode | string export interface IREffect { diff --git a/packages/compiler-vapor/src/transform.ts b/packages/compiler-vapor/src/transform.ts index 073b4ad6a..61f0f6e89 100644 --- a/packages/compiler-vapor/src/transform.ts +++ b/packages/compiler-vapor/src/transform.ts @@ -103,7 +103,7 @@ export const genDefaultDynamic = (): IRDynamicInfo => ({ id: null, dynamicFlags: 0, placeholder: null, - children: {}, + children: [], }) // TODO use class for better perf @@ -313,9 +313,8 @@ function transformNode( function transformChildren(ctx: TransformContext) { const { children } = ctx.node - let i = 0 - for (; i < children.length; i++) { - const child = children[i] + + for (const [i, child] of children.entries()) { const childContext = createContext(child, ctx, i) transformNode(childContext) ctx.childrenTemplate.push(childContext.template) @@ -331,9 +330,7 @@ function processDynamicChildren(ctx: TransformContext) { let prevChildren: IRDynamicInfo[] = [] let hasStatic = false - for (let index = 0; index < node.children.length; index++) { - const child = ctx.dynamic.children[index] - + for (const [index, child] of ctx.dynamic.children.entries()) { if (!child || !(child.dynamicFlags & DynamicFlag.INSERT)) { if (prevChildren.length) { if (hasStatic) { @@ -363,7 +360,7 @@ function processDynamicChildren(ctx: TransformContext) { prevChildren.push(child) - if (index === node.children.length - 1) { + if (index === ctx.dynamic.children.length - 1) { ctx.registerOperation({ type: IRNodeTypes.APPEND_NODE, loc: node.loc,