refactor(compiler-vapor): make dynamic.children an array

This commit is contained in:
三咲智子 Kevin Deng 2024-01-29 22:28:40 +08:00
parent 22436ea341
commit ed9368c06c
No known key found for this signature in database
GPG Key ID: 69992F2250DFD93E
2 changed files with 6 additions and 10 deletions

View File

@ -200,9 +200,8 @@ export interface IRDynamicInfo {
id: number | null
dynamicFlags: DynamicFlag
placeholder: number | null
children: IRDynamicChildren
children: IRDynamicInfo[]
}
export type IRDynamicChildren = Record<number, IRDynamicInfo>
export type IRExpression = SimpleExpressionNode | string
export interface IREffect {

View File

@ -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<RootNode | ElementNode>) {
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<RootNode | ElementNode>) {
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<RootNode | ElementNode>) {
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,