From 07fd7e4d418c48502f572d77bee0384fb44aba40 Mon Sep 17 00:00:00 2001 From: daiwei Date: Wed, 30 Jul 2025 20:40:36 +0800 Subject: [PATCH] fix(runtime-vapor): properly handle fast remove in keyed diff --- packages/runtime-vapor/src/apiCreateFor.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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( -- 2.47.2