-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
75 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import { useCallback, useRef } from 'react'; | ||
import noop from '../utils/noop'; | ||
|
||
/** | ||
* @description 주어진 콜백 함수의 `참조를 유지`하고, 컴포넌트 렌더링 사이에 재사용할 수 있도록 도와주는 커스텀 훅입니다. | ||
* | ||
* 이 훅은 특히 콜백 함수가 렌더링 중에 변경될 때 유용합니다. 불필요한 함수 생성을 방지하고 최적화하며, 최신 버전의 콜백 함수를 사용 할 수 있습니다. | ||
* | ||
* @template T - 콜백 함수의 타입. | ||
* @param {T | undefined} [callback=noop] - 유지하고자 하는 콜백 함수. | ||
* @returns {T} 최신 콜백 함수 참조를 사용하는 메모이제이션된 콜백 함수. | ||
* | ||
* @example | ||
* const preservedCallback = usePreservedCallback(callback); | ||
* | ||
* preservedCallback(); | ||
*/ | ||
const usePreservedCallback = <T extends (...args: any[]) => any>( | ||
callback: T = noop as T | ||
): T => { | ||
const callbackRef = useRef<T>(callback); | ||
|
||
callbackRef.current = callback; | ||
|
||
return useCallback((...args: any[]) => { | ||
return callbackRef.current(...args); | ||
}, []) as T; | ||
}; | ||
export default usePreservedCallback; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,22 @@ | ||
/** | ||
* @description 2개의 배열을 비교하는 함수입니다. | ||
* @description 2개의 1차원 배열을 순서와 내부 값이 일치하는지 비교하는 함수입니다. | ||
* | ||
* @template T 배열 내부 요소의 타입 | ||
* | ||
* @param T[] array 첫번째 array | ||
* @param T[] array 두번째 array | ||
* @param array1 첫번째 array | ||
* @param array2 두번째 array | ||
* | ||
* @returns boolean값 | ||
* | ||
* @example arraysEquial<number>([1,2,3,4,5],[1,2,3,4,1]); | ||
* @example isArrayContentEqual([1,2,3,4,5],['a',2,3,1]); | ||
* //false | ||
*/ | ||
const arraysEqual = <T>(array1: T[], array2: T[]) => { | ||
return JSON.stringify(array1) === JSON.stringify(array2); | ||
const isArrayContentEqual = (array1: any[], array2: any[]): boolean => { | ||
if (array1.length !== array2.length) return false; | ||
for (let i = 0; i < array1.length; i++) { | ||
if (array1[i] !== array2[i]) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
}; | ||
export default arraysEqual; | ||
export default isArrayContentEqual; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
/** | ||
* @description 아무 작업도 수행하지 않는 함수입니다. | ||
* 주로 콜백 함수나 기본 동작이 필요하지 않은 경우에 사용됩니다. | ||
* | ||
* @returns {void} - 아무런 값도 반환하지 않는 `Promise`를 반환합니다. | ||
* | ||
* @example | ||
* noop(); // 이 함수는 아무런 작업도 하지 않고 종료됩니다. | ||
*/ | ||
export default function noop(): void {} |