@modern-kit/react
Version:
1 lines • 1.47 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../src/hooks/usePreservedCallback/index.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\n/**\n * @description 주어진 콜백 함수의 `참조를 유지`하고, 컴포넌트 렌더링 사이에 재사용할 수 있도록 도와주는 커스텀 훅입니다.\n *\n * 이 훅은 특히 콜백 함수가 렌더링 중에 변경될 때 유용합니다. 불필요한 함수 생성을 방지하고 최적화하며, 최신 버전의 콜백 함수를 사용 할 수 있습니다.\n *\n * @template T - 콜백 함수의 타입.\n * @param {T | undefined} callback - 참조를 유지하고자 하는 콜백 함수.\n * @returns {T} 최신 콜백 함수 참조를 사용하는 메모이제이션된 콜백 함수.\n *\n * @example\n * const preservedCallback = usePreservedCallback(callback);\n *\n * preservedCallback();\n */\nexport function usePreservedCallback<T extends (...args: any[]) => any>(\n callback: T\n): T {\n const callbackRef = useRef<T>(callback);\n\n callbackRef.current = callback;\n\n return useCallback((...args: any[]) => {\n return callbackRef.current(...args);\n }, []) as T;\n}\n"],"names":["useRef","useCallback"],"mappings":";;;;AAgBO,SAAS,qBACd,QAAA,EACG;AACH,EAAA,MAAM,WAAA,GAAcA,aAAU,QAAQ,CAAA;AAEtC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAEtB,EAAA,OAAOC,iBAAA,CAAY,IAAI,IAAA,KAAgB;AACrC,IAAA,OAAO,WAAA,CAAY,OAAA,CAAQ,GAAG,IAAI,CAAA;AAAA,EACpC,CAAA,EAAG,EAAE,CAAA;AACP;;;;"}