Skip to content

Commit 0e12b99

Browse files
committed
Fixed scrolling multiple tables
1 parent 596f927 commit 0e12b99

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/hoc/withScrollSpy.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import _ from 'lodash';
22
import React, { Component, useRef, useState, useEffect, useContext } from 'react';
33
import { useSelector } from 'react-redux';
44
import ConfigContext from '../context';
5+
import { isUndefined } from '../utils';
56

67
export let scrollerMap = {};
78

@@ -10,10 +11,14 @@ const withScrollSpy = WrappedComponent => (props) => {
1011
const id = _.uniqueId(name);
1112
const ref = useRef(null);
1213
const [ scrollData, setScrollData ] = useState({ top: 0, pointerEvents: 'none' });
13-
const { getData, minWidth, config: { height } } = useContext(ConfigContext);
14+
const { getData, minWidth, config: { name: tableName, height } } = useContext(ConfigContext);
1415

1516
const handleScroll = (event) => {
16-
_.map(scrollerMap, (ref, key, index) => (
17+
if (isUndefined(scrollerMap[tableName])) {
18+
return;
19+
}
20+
21+
_.map(scrollerMap[tableName], (ref, key, index) => (
1722
ref.current.scrollLeft = event.target.scrollLeft
1823
));
1924

@@ -27,14 +32,18 @@ const withScrollSpy = WrappedComponent => (props) => {
2732
ref.current.removeEventListener('scroll', handleScroll, true);
2833
ref.current.addEventListener('scroll', handleScroll, true);
2934
} else {
30-
scrollerMap[id] = ref;
35+
if (isUndefined(scrollerMap[tableName])) {
36+
scrollerMap[tableName] = {};
37+
}
38+
39+
scrollerMap[tableName][id] = ref;
3140
}
3241

3342
return () => {
3443
if (name === 'Body') {
3544
ref.current.removeEventListener('scroll', handleScroll, true);
3645
} else {
37-
delete scrollerMap[id];
46+
delete scrollerMap[tableName][id];
3847
}
3948
};
4049
}, [ handleScroll ]);

0 commit comments

Comments
 (0)