From: daiwei Date: Wed, 30 Jul 2025 12:40:36 +0000 (+0800) Subject: fix(runtime-vapor): properly handle fast remove in keyed diff X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=07fd7e4d418c48502f572d77bee0384fb44aba40;p=thirdparty%2Fvuejs%2Fcore.git fix(runtime-vapor): properly handle fast remove in keyed diff --- diff --git a/packages/runtime-vapor/src/apiCreateFor.ts b/packages/runtime-vapor/src/apiCreateFor.ts index 864bebb8a8..bdd2af7b34 100644 --- a/packages/runtime-vapor/src/apiCreateFor.ts +++ b/packages/runtime-vapor/src/apiCreateFor.ts @@ -256,6 +256,7 @@ export const createFor = ( const previousKeyIndexMap = new Map(previousKeyIndexPairs) const operations: (() => void)[] = [] + let mountCounter = 0 const relocateOrMountBlock = ( blockIndex: number, blockItem: ReturnType, @@ -280,6 +281,7 @@ export const createFor = ( ) } } else { + mountCounter++ operations.push(() => mount( source, @@ -310,7 +312,7 @@ export const createFor = ( relocateOrMountBlock(i, blockItem, blockKey, -1) } - const useFastRemove = operations.length === newLength + const useFastRemove = mountCounter === newLength for (const leftoverIndex of previousKeyIndexMap.values()) { unmount(