UNPKG

@modern-kit/react

Version:
1 lines 2.34 kB
{"version":3,"file":"index.mjs","sources":["../../../src/hooks/useCounter/index.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\ninterface UseCounterReturnType {\n counter: number;\n setCounter: React.Dispatch<React.SetStateAction<number>>;\n increment: () => void;\n decrement: () => void;\n reset: () => void;\n}\n/**\n * @description 카운터를 관리하는 커스텀 훅으로, 증가, 감소 및 리셋 기능을 제공합니다.\n *\n * @param {UseCounterProps} props - 카운터 초기화를 위한 속성들.\n * @returns {Object} 카운터 값, 설정 함수 및 제어 함수들을 포함한 객체.\n * @property {number} counter - 현재 카운터 값.\n * @property {React.Dispatch<React.SetStateAction<number>>} setCounter - 카운터 값을 수동으로 설정하는 함수.\n * @property {() => void} increment - 카운터를 1씩 증가시키는 함수\n * @property {() => void} decrement - 카운터를 1씩 감소시키는 함수\n * @property {() => void} reset - 카운터를 초기 값으로 리셋하는 함수.\n *\n * @example\n * const { counter, setCounter, increment, decrement, reset } = useCounter(10);\n *\n * increment(); // counter: 11\n * decrement(); // counter: 10\n * setCounter(20); // counter: 20\n * reset(); // counter: 10\n */\nexport function useCounter(initialValue: number = 0): UseCounterReturnType {\n const [counter, setCounter] = useState(initialValue);\n\n const increment = useCallback(() => {\n setCounter((prev) => prev + 1);\n }, []);\n\n const decrement = useCallback(() => {\n setCounter((prev) => prev - 1);\n }, []);\n\n const reset = useCallback(() => {\n setCounter(initialValue);\n }, [initialValue]);\n\n return { counter, setCounter, increment, decrement, reset };\n}\n"],"names":[],"mappings":";;AA4BO,SAAS,UAAA,CAAW,eAAuB,CAAA,EAAyB;AACzE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,YAAY,CAAA;AAEnD,EAAA,MAAM,SAAA,GAAY,YAAY,MAAM;AAClC,IAAA,UAAA,CAAW,CAAC,IAAA,KAAS,IAAA,GAAO,CAAC,CAAA;AAAA,EAC/B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,SAAA,GAAY,YAAY,MAAM;AAClC,IAAA,UAAA,CAAW,CAAC,IAAA,KAAS,IAAA,GAAO,CAAC,CAAA;AAAA,EAC/B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,UAAA,CAAW,YAAY,CAAA;AAAA,EACzB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,OAAO,EAAE,OAAA,EAAS,UAAA,EAAY,SAAA,EAAW,WAAW,KAAA,EAAM;AAC5D;;;;"}