perf: reuse currentHydrationNode when possible

This commit is contained in:
daiwei 2025-09-29 11:46:24 +08:00
parent ba48c8ab57
commit 12d5bb5653
1 changed files with 9 additions and 2 deletions

View File

@ -157,7 +157,11 @@ function locateHydrationNodeImpl(): void {
// prepend
if (insertionAnchor === 0) {
// use prevDynamicCount as logical index to locate the hydration node
node = locateChildByLogicalIndex(insertionParent!, prevDynamicCount)!
node =
prevDynamicCount === 0 &&
currentHydrationNode!.parentNode === insertionParent
? currentHydrationNode
: locateChildByLogicalIndex(insertionParent!, prevDynamicCount)!
}
// insert
else if (insertionAnchor instanceof Node) {
@ -188,7 +192,10 @@ function locateHydrationNodeImpl(): void {
node = locateChildByLogicalIndex(insertionParent!, appendIndex + 1)!
} else {
if (insertionAnchor === null) {
node = locateChildByLogicalIndex(insertionParent!, 0)!
node =
currentHydrationNode!.parentNode === insertionParent
? currentHydrationNode
: locateChildByLogicalIndex(insertionParent!, 0)!
} else {
node = locateChildByLogicalIndex(
insertionParent!,