@@ -141,18 +141,25 @@ const StickyScrollBar: React.ForwardRefRenderFunction<unknown, StickyScrollBarPr
141
141
} ) ) ;
142
142
143
143
React . useEffect ( ( ) => {
144
- document . body . addEventListener ( MOUSEUP_EVENT , onMouseUp , false ) ;
145
- document . body . addEventListener ( MOUSEMOVE_EVENT , onMouseMove , false ) ;
144
+ const abortController = new AbortController ( ) ;
145
+ document . body . addEventListener ( MOUSEUP_EVENT , onMouseUp , {
146
+ capture : false ,
147
+ signal : abortController . signal ,
148
+ } ) ;
149
+ document . body . addEventListener ( MOUSEMOVE_EVENT , onMouseMove , {
150
+ capture : false ,
151
+ signal : abortController . signal ,
152
+ } ) ;
146
153
checkScrollBarVisible ( ) ;
147
154
return ( ) => {
148
- document . body . removeEventListener ( MOUSEUP_EVENT , onMouseUp ) ;
149
- document . body . removeEventListener ( MOUSEMOVE_EVENT , onMouseMove ) ;
155
+ abortController . abort ( ) ;
150
156
} ;
151
157
} , [ scrollBarWidth , isActive ] ) ;
152
158
153
159
// Loop for scroll event check
154
160
React . useEffect ( ( ) => {
155
161
if ( ! scrollBodyRef . current ) return ;
162
+ const abortController = new AbortController ( ) ;
156
163
157
164
const scrollParents : ( HTMLElement | SVGElement ) [ ] = [ ] ;
158
165
let parent = getDOM ( scrollBodyRef . current ) ;
@@ -161,16 +168,27 @@ const StickyScrollBar: React.ForwardRefRenderFunction<unknown, StickyScrollBarPr
161
168
parent = parent . parentElement ;
162
169
}
163
170
164
- scrollParents . forEach ( p => p . addEventListener ( SCROLL_EVENT , checkScrollBarVisible , false ) ) ;
165
- window . addEventListener ( RESIZE_EVENT , checkScrollBarVisible , false ) ;
166
- window . addEventListener ( SCROLL_EVENT , checkScrollBarVisible , false ) ;
167
- container . addEventListener ( SCROLL_EVENT , checkScrollBarVisible , false ) ;
171
+ scrollParents . forEach ( p =>
172
+ p . addEventListener ( SCROLL_EVENT , checkScrollBarVisible , {
173
+ capture : false ,
174
+ signal : abortController . signal ,
175
+ } ) ,
176
+ ) ;
177
+ window . addEventListener ( RESIZE_EVENT , checkScrollBarVisible , {
178
+ capture : false ,
179
+ signal : abortController . signal ,
180
+ } ) ;
181
+ window . addEventListener ( SCROLL_EVENT , checkScrollBarVisible , {
182
+ capture : false ,
183
+ signal : abortController . signal ,
184
+ } ) ;
185
+ container . addEventListener ( SCROLL_EVENT , checkScrollBarVisible , {
186
+ capture : false ,
187
+ signal : abortController . signal ,
188
+ } ) ;
168
189
169
190
return ( ) => {
170
- scrollParents . forEach ( p => p . removeEventListener ( SCROLL_EVENT , checkScrollBarVisible ) ) ;
171
- window . removeEventListener ( RESIZE_EVENT , checkScrollBarVisible ) ;
172
- window . removeEventListener ( SCROLL_EVENT , checkScrollBarVisible ) ;
173
- container . removeEventListener ( SCROLL_EVENT , checkScrollBarVisible ) ;
191
+ abortController . abort ( ) ;
174
192
} ;
175
193
} , [ container ] ) ;
176
194
0 commit comments