[์ ๋ฐ๋ฏธx์ค๋์ดํผํฉํ ๋ฆฌ] 10์ฃผ ์์ฑ ํ๋ก์ ํธ ์บ ํ 23์ผ์ฐจ - ๋ฆฌ์กํธ(4)

๐ ์ปค์คํ ํ (Hook)
๐ ์ปค์คํ ํ (Custom Hooks)์ ์ฌ์ฉ์๊ฐ ์ง์ ๋ง๋ ํ ์ ๋งํ๋ฉฐ, ์ฌ๋ฌ ์ปดํฌ๋ํธ ๊ฐ์ ์ํ ๋ก์ง์ ์ฌ์ฌ์ฉํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๐ ์ปค์คํ ํ ์ ๊ธฐ๋ณธ ํ ์ ํ์ฉํ์ฌ ๋ง๋ค์ด์ง๋ฉฐ, ์ด๋ฆ์ "use"๋ก ์์ํด์ผ ํ๋ค.
๐ ์ฌ์ฉ์์
๐ ์ปค์คํ ํ
import {useState} from "react"
function useCounter(initialCount) {
const [count, setCount] = useState(initialCount);
const increment = () => {
setCount(count + 1)
}
return {count, increment};
}
export default useCounter
๐ ์ปดํฌ๋ํธ
import useCounter from "../hooks/countHook";
import React from "react";
function UseCount() {
const { count, increment } = useCounter(100)
return (
<div>
<p>์นด์ดํธ : {count}</p>
<button onClick={increment}>์ฆ๊ฐ</button>
<div>
)
}
export default UseCount
๐ป ์ฝ๋ ์งํ ์์
๐ ์์ ์ปค์คํ ํ ์์ useCounter๋ผ๋ ํจ์๋ฅผ ๋ง๋ค๊ณ ์ธ์๋ ์ด๋ค ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
๐ ๊ทธ ๊ฐ์ useState()ํจ์๋ก ๊ด๋ฆฌํ๋ค.
๐ increment()๋ผ๋ ํจ์๋ฅผ ๋ง๋ค์ด์ ๊ธฐ์กด์ ๊ฐ์ 1์ฉ ๋ํ๋ค.
๐ return ํ ๋ ๋ด๊ฐ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฐ์ ๊ฐ์ฒด๋ก ๊ฐ์ธ์ค๋ค.
๐ ์ปดํฌ๋ํธ์์ ์ฒ์์ ํด๋น ํ์ผ์ import ํด์ค๋ค.
๐ useCounter์ 100์ด๋ผ๋ ์ซ์๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ์ปค์คํ ํ ์์ ๊ทธ ๊ฐ์ ์ธ์๋ก ๋ฐ๋๋ค.
๐ ๊ทธ๋ฆฌ๊ณ ์ปค์คํ ํ ์์ ๋ฆฌํดํ ๊ฐ์ ๊ตฌ์กฐ๋ถํดํ ๋น์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๐ ๊ทธ๋ฆฌ๊ณ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ๋ํ๋ด๋ฉด ๋๋ค.
๋ณธ ํ๊ธฐ๋ ์ ๋ฐ๋ฏธ-์ค๋์ดํผํฉํ ๋ฆฌ 10์ฃผ ์์ฑ ํ๋ก์ ํธ์บ ํ ํ์ต ์ผ์ง ํ๊ธฐ๋ก ์์ฑ ๋์์ต๋๋ค.