fix(runtime-vapor): properly handle fast remove in keyed diff
ci / test (push) Has been cancelled Details
ci / continuous-release (push) Has been cancelled Details
size data / upload (push) Has been cancelled Details

This commit is contained in:
daiwei 2025-07-30 20:40:36 +08:00
parent 348ffafbc6
commit 07fd7e4d41
1 changed files with 3 additions and 1 deletions

View File

@ -256,6 +256,7 @@ export const createFor = (
const previousKeyIndexMap = new Map(previousKeyIndexPairs)
const operations: (() => void)[] = []
let mountCounter = 0
const relocateOrMountBlock = (
blockIndex: number,
blockItem: ReturnType<typeof getItem>,
@ -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(