Skip to content

Commit 606f0b5

Browse files
fix: debounce data-change event for SET_2D_LEVEL action
The event is now delayed by 100ms and only triggers once scrolling stops, reducing unnecessary re-renders for consumers of the data-change event.
1 parent 2081ce4 commit 606f0b5

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/NMRiumWrapper.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,20 @@ export default function NMRiumWrapper() {
2525

2626
const { load: loadSpectra, data, isLoading } = useLoadSpectra();
2727

28+
const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
29+
2830
const dataChangeHandler = useCallback<NMRiumChangeCb>((state, source) => {
31+
if (source === 'view' && state.data.actionType === 'SET_2D_LEVEL') {
32+
if (debounceTimerRef.current !== null) {
33+
clearTimeout(debounceTimerRef.current);
34+
}
35+
debounceTimerRef.current = setTimeout(() => {
36+
events.trigger('data-change', { state, source });
37+
debounceTimerRef.current = null;
38+
}, 100);
39+
return;
40+
}
41+
2942
events.trigger('data-change', { state, source });
3043
}, []);
3144

0 commit comments

Comments
 (0)