Skip to content

Commit 3a9239d

Browse files
authored
Fix crash in GridLayout when a persisted key is deleted (#6731)
1 parent 506a8fd commit 3a9239d

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

packages/@react-stately/layout/src/GridLayout.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,16 @@ export class GridLayout<T, O = any> extends Layout<Node<T>, O> implements DropTa
101101
let firstVisibleItem = this.getIndexAtPoint(rect.x, rect.y);
102102
let lastVisibleItem = this.getIndexAtPoint(rect.maxX, rect.maxY);
103103
let result = this.layoutInfos.slice(firstVisibleItem, lastVisibleItem + 1);
104-
let persistedIndices = [...this.virtualizer.persistedKeys].map(key => this.virtualizer.collection.getItem(key).index).sort((a, b) => a - b);
105-
let persistedBefore = [];
104+
let persistedIndices: number[] = [];
105+
for (let key of this.virtualizer.persistedKeys) {
106+
let item = this.virtualizer.collection.getItem(key);
107+
if (item?.index != null) {
108+
persistedIndices.push(item.index);
109+
}
110+
}
111+
persistedIndices.sort((a, b) => a - b);
112+
113+
let persistedBefore: LayoutInfo[] = [];
106114
for (let index of persistedIndices) {
107115
if (index < firstVisibleItem) {
108116
persistedBefore.push(this.layoutInfos[index]);

0 commit comments

Comments
 (0)