@@ -12,10 +12,11 @@ interface StickyScrollBarProps {
12
12
onScroll : ( params : { scrollLeft ?: number } ) => void ;
13
13
offsetScroll : number ;
14
14
container : HTMLElement | Window ;
15
+ data ?: readonly any [ ] ;
15
16
}
16
17
17
18
const StickyScrollBar : React . ForwardRefRenderFunction < unknown , StickyScrollBarProps > = (
18
- { scrollBodyRef, onScroll, offsetScroll, container } ,
19
+ { scrollBodyRef, onScroll, offsetScroll, container, data } ,
19
20
ref ,
20
21
) => {
21
22
const prefixCls = useContext ( TableContext , 'prefixCls' ) ;
@@ -80,7 +81,7 @@ const StickyScrollBar: React.ForwardRefRenderFunction<unknown, StickyScrollBarPr
80
81
refState . current . x = event . pageX ;
81
82
} ;
82
83
83
- const onContainerScroll = ( ) => {
84
+ const checkScrollBarVisible = ( ) => {
84
85
if ( ! scrollBodyRef . current ) {
85
86
return ;
86
87
}
@@ -123,16 +124,16 @@ const StickyScrollBar: React.ForwardRefRenderFunction<unknown, StickyScrollBarPr
123
124
React . useEffect ( ( ) => {
124
125
const onMouseUpListener = addEventListener ( document . body , 'mouseup' , onMouseUp , false ) ;
125
126
const onMouseMoveListener = addEventListener ( document . body , 'mousemove' , onMouseMove , false ) ;
126
- onContainerScroll ( ) ;
127
+ checkScrollBarVisible ( ) ;
127
128
return ( ) => {
128
129
onMouseUpListener . remove ( ) ;
129
130
onMouseMoveListener . remove ( ) ;
130
131
} ;
131
132
} , [ scrollBarWidth , isActive ] ) ;
132
133
133
134
React . useEffect ( ( ) => {
134
- const onScrollListener = addEventListener ( container , 'scroll' , onContainerScroll , false ) ;
135
- const onResizeListener = addEventListener ( window , 'resize' , onContainerScroll , false ) ;
135
+ const onScrollListener = addEventListener ( container , 'scroll' , checkScrollBarVisible , false ) ;
136
+ const onResizeListener = addEventListener ( window , 'resize' , checkScrollBarVisible , false ) ;
136
137
137
138
return ( ) => {
138
139
onScrollListener . remove ( ) ;
@@ -155,6 +156,11 @@ const StickyScrollBar: React.ForwardRefRenderFunction<unknown, StickyScrollBarPr
155
156
}
156
157
} , [ scrollState . isHiddenScrollBar ] ) ;
157
158
159
+ // The best way is to use ResizeObserver to detect the body height, but this way is enough
160
+ React . useEffect ( ( ) => {
161
+ checkScrollBarVisible ( ) ;
162
+ } , [ data ] ) ;
163
+
158
164
if ( bodyScrollWidth <= bodyWidth || ! scrollBarWidth || scrollState . isHiddenScrollBar ) {
159
165
return null ;
160
166
}
0 commit comments