From: daiwei Date: Mon, 29 Sep 2025 14:10:24 +0000 (+0800) Subject: perf: replace $lastLogicalChild with vfor end anchor X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f567f59fe70a77cda3215ba9db5878579cbdf0ab;p=thirdparty%2Fvuejs%2Fcore.git perf: replace $lastLogicalChild with vfor end anchor --- diff --git a/packages/runtime-vapor/src/apiCreateFor.ts b/packages/runtime-vapor/src/apiCreateFor.ts index 51b563d97f..a6db691f76 100644 --- a/packages/runtime-vapor/src/apiCreateFor.ts +++ b/packages/runtime-vapor/src/apiCreateFor.ts @@ -35,6 +35,7 @@ import { } from './dom/hydration' import { ForFragment, VaporFragment, findLastChild } from './fragment' import { + type ChildItem, insertionAnchor, insertionParent, resetInsertionState, @@ -150,6 +151,15 @@ export const createFor = ( if (!parentAnchor || (parentAnchor && !isComment(parentAnchor, ']'))) { throw new Error(`v-for fragment anchor node was not found.`) } + + // $lastLogicalChild is the fragment start anchor; replacing it with end anchor + // can avoid the call to locateEndAnchor within locateChildByLogicalIndex + if (_insertionParent && _insertionParent!.$lastLogicalChild) { + ;(parentAnchor as any as ChildItem).$idx = ( + _insertionParent!.$lastLogicalChild as ChildItem + ).$idx + _insertionParent.$lastLogicalChild = parentAnchor + } } } else { parent = parent || parentAnchor!.parentNode