Skip to content

Commit 51257dd

Browse files
committed
Improve the performance
1 parent 8a7c628 commit 51257dd

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

packages/react/src/composite/list/CompositeList.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,17 @@ export function CompositeList<Metadata>(props: CompositeList.Props<Metadata>) {
6363
return undefined;
6464
}
6565

66-
const mutationObserver = new MutationObserver(() => {
67-
lastTickRef.current = {};
68-
setMapTick(lastTickRef.current);
66+
const mutationObserver = new MutationObserver((entries) => {
67+
const diff = new Set<Node>();
68+
const updateDiff = (node: Node) => diff.has(node) ? diff.delete(node) : diff.add(node);
69+
entries.forEach((entry) => {
70+
entry.removedNodes.forEach(updateDiff);
71+
entry.addedNodes.forEach(updateDiff);
72+
});
73+
if (diff.size === 0) {
74+
lastTickRef.current = {};
75+
setMapTick(lastTickRef.current);
76+
}
6977
});
7078

7179
sortedMap.forEach((_, node) => {

0 commit comments

Comments
 (0)