Skip to content

Commit 39fc3ed

Browse files
authored
fix: add requestAnimationFrame to resizeObserver(#23956); (#319)
1 parent 099bcec commit 39fc3ed

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/DOMWrap.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ class DOMWrap extends React.Component<DOMWrapProps, DOMWrapState> {
4646
// cache item of the original items (so we can track the size and order)
4747
menuItemSizes: number[] = [];
4848

49+
cancelFrameId: number = null;
50+
4951
state: DOMWrapState = {
5052
lastVisibleIndex: undefined,
5153
};
@@ -58,7 +60,13 @@ class DOMWrap extends React.Component<DOMWrapProps, DOMWrapState> {
5860
return;
5961
}
6062
this.resizeObserver = new ResizeObserver(entries => {
61-
entries.forEach(this.setChildrenWidthAndResize);
63+
entries.forEach(() => {
64+
const { cancelFrameId } = this;
65+
cancelAnimationFrame(cancelFrameId);
66+
this.cancelFrameId = requestAnimationFrame(
67+
this.setChildrenWidthAndResize,
68+
);
69+
});
6270
});
6371

6472
[].slice
@@ -95,6 +103,7 @@ class DOMWrap extends React.Component<DOMWrapProps, DOMWrapState> {
95103
if (this.mutationObserver) {
96104
this.mutationObserver.disconnect();
97105
}
106+
cancelAnimationFrame(this.cancelFrameId);
98107
}
99108

100109
// get all valid menuItem nodes

0 commit comments

Comments
 (0)