@modern-kit/react
Version:
1 lines • 1.4 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../src/hooks/useDeepCompareEffect/index.ts"],"sourcesContent":["import { useConditionalEffect } from '../useConditionalEffect';\nimport { isEqual } from '@modern-kit/utils';\nimport { type DependencyList, type EffectCallback } from 'react';\n\n/**\n * @description 의존성 배열을 깊은 비교(deep comparison)를 통해 판단하여 effect를 실행하는 커스텀 훅입니다.\n *\n * ⚠️ 깊은 비교를 수행하기 때문에 성능 이슈가 발생할 수 있어 사용 시 주의가 필요합니다.\n *\n * @param {EffectCallback} effectCallback - 실행할 effectCallback 함수\n * @param {DependencyList} deps - 의존성 배열\n *\n * @example\n * useDeepCompareEffect(() => {\n * console.log('obj가 변경되었습니다.');\n * }, [obj]);\n */\nexport function useDeepCompareEffect(\n effectCallback: EffectCallback,\n deps: DependencyList\n) {\n useConditionalEffect(effectCallback, deps, (prevDeps, currentDeps) => {\n if (prevDeps === undefined) {\n return true;\n }\n\n return !isEqual(prevDeps, currentDeps);\n });\n}\n"],"names":[],"mappings":";;;;AAiBO,SAAS,oBAAA,CACd,gBACA,IAAA,EACA;AACA,EAAA,oBAAA,CAAqB,cAAA,EAAgB,IAAA,EAAM,CAAC,QAAA,EAAU,WAAA,KAAgB;AACpE,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,CAAC,OAAA,CAAQ,QAAA,EAAU,WAAW,CAAA;AAAA,EACvC,CAAC,CAAA;AACH;;;;"}