1
- import { useEffect , useState } from 'react' ;
1
+ import { useCallback , useEffect , useState } from 'react' ;
2
2
import { Fn } from '../types' ;
3
3
import { hasNavigator } from '../utils' ;
4
4
@@ -33,6 +33,9 @@ const useOnlineStatus = ({
33
33
hasNavigator ( ) ? navigator . onLine : false
34
34
) ;
35
35
36
+ const memoizedOnline = useCallback ( onlineCallback , [ onlineCallback ] ) ;
37
+ const memorizedOffline = useCallback ( offlineCallback , [ offlineCallback ] ) ;
38
+
36
39
useEffect ( ( ) => {
37
40
if ( ! hasNavigator ( ) ) {
38
41
console . error ( 'navigator is not supported in this environment.' ) ;
@@ -41,12 +44,12 @@ const useOnlineStatus = ({
41
44
42
45
const handleOnline = ( ) => {
43
46
setIsOnline ( true ) ;
44
- onlineCallback ( ) ;
47
+ memoizedOnline ( ) ;
45
48
} ;
46
49
47
50
const handleOffline = ( ) => {
48
51
setIsOnline ( false ) ;
49
- offlineCallback ( ) ;
52
+ memorizedOffline ( ) ;
50
53
} ;
51
54
52
55
window . addEventListener ( 'online' , handleOnline ) ;
@@ -56,7 +59,7 @@ const useOnlineStatus = ({
56
59
window . removeEventListener ( 'online' , handleOnline ) ;
57
60
window . removeEventListener ( 'offline' , handleOffline ) ;
58
61
} ;
59
- } , [ onlineCallback , offlineCallback ] ) ;
62
+ } , [ memoizedOnline , memorizedOffline ] ) ;
60
63
61
64
return {
62
65
isOnline,
0 commit comments