diff --git a/docs/pages/docs/hooks/_meta.json b/docs/pages/docs/hooks/_meta.json index 505f9af..fe0dc90 100644 --- a/docs/pages/docs/hooks/_meta.json +++ b/docs/pages/docs/hooks/_meta.json @@ -1,6 +1,7 @@ { - "useTranslation": "useTranslation", + "useDeepCompareEffect": "useDeepCompareEffect", "useMousePosition": "useMousePosition", "useTimer": "useTimer", - "useToggle": "useToggle" + "useToggle": "useToggle", + "useTranslation": "useTranslation" } diff --git a/docs/pages/docs/hooks/useDeepCompareEffect.mdx b/docs/pages/docs/hooks/useDeepCompareEffect.mdx new file mode 100644 index 0000000..a0f7783 --- /dev/null +++ b/docs/pages/docs/hooks/useDeepCompareEffect.mdx @@ -0,0 +1,46 @@ +# useDeepCompareEffect + +## Introduce + +의존성 배열의 깊은 비교를 통해 변화를 감지하고 콜백을 실행시키는 훅입니다. + +```ts +const useDeepCompareEffect = (callback: () => void, dependencies: unknown[]) => void +``` + +### Props + +- `callback` : 의존성 배열의 변화가 감지되었을 때 실행할 콜백 함수 +- `dependencies` : 의존성 배열 + +## Examples + +```tsx copy filename="TestComponent.tsx" +function App() { + const [, setCount] = useState(0); + const effectCountRef = useRef(0); + const deepCompareCountRef = useRef(0); + + useEffect(() => { + effectCountRef.current += 1; + // 빈 객체는 매번 새로운 참조를 갖기 때문에 effectCount는 계속 증가 + }, [{}]); + + useDeepCompareEffect(() => { + deepCompareCountRef.current += 1; + // 빈 객체를 같은 값으로 판단해 deepCompareCountRef는 한 번(첫 시도)만 증가 + }, [{}]); + + return ( +
effectCount: {effectCountRef.current}
+deepCompareCount: {deepCompareCountRef.current}
++ +
+