Skip to content

Commit 83e6a7b

Browse files
committed
🩹 chore: 콜백 함수 메모이제이션 적용하여 불필요한 리렌더링 방지
1 parent a8f0ced commit 83e6a7b

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/hooks/useOnlineStatus.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, useState } from 'react';
1+
import { useCallback, useEffect, useState } from 'react';
22
import { Fn } from '../types';
33
import { hasNavigator } from '../utils';
44

@@ -33,6 +33,9 @@ const useOnlineStatus = ({
3333
hasNavigator() ? navigator.onLine : false
3434
);
3535

36+
const memoizedOnline = useCallback(onlineCallback, [onlineCallback]);
37+
const memorizedOffline = useCallback(offlineCallback, [offlineCallback]);
38+
3639
useEffect(() => {
3740
if (!hasNavigator()) {
3841
console.error('navigator is not supported in this environment.');
@@ -41,12 +44,12 @@ const useOnlineStatus = ({
4144

4245
const handleOnline = () => {
4346
setIsOnline(true);
44-
onlineCallback();
47+
memoizedOnline();
4548
};
4649

4750
const handleOffline = () => {
4851
setIsOnline(false);
49-
offlineCallback();
52+
memorizedOffline();
5053
};
5154

5255
window.addEventListener('online', handleOnline);
@@ -56,7 +59,7 @@ const useOnlineStatus = ({
5659
window.removeEventListener('online', handleOnline);
5760
window.removeEventListener('offline', handleOffline);
5861
};
59-
}, [onlineCallback, offlineCallback]);
62+
}, [memoizedOnline, memorizedOffline]);
6063

6164
return {
6265
isOnline,

0 commit comments

Comments
 (0)