μ€λ 볡μ΅νλ€ μκ°ν΄λ³΄λ μ μΌ μ€μν hookμ λν΄ λ€λ£¨μ§ μμκ² κ°μ
λΆλ΄λΆλ΄ μ 리ν΄μ μ¬λ¦¬κ² λμλ€.
μ΄λ°.. 리μ‘νΈ ,, ν
λλ λ
μ..
ν¨μν μ»΄ν¬λνΈ λ΄μμ μν(state), λΆμ ν¨κ³Ό(side effect), μλͺ
μ£ΌκΈ° λ©μλ λ±μ κ΄λ¦¬ν μ μκ² ν΄μ£Όλ νΉλ³ν ν¨μμ΄λ©° React 16.8 λ²μ μ λμ
λμλ€.
κΈ°μ‘΄ ν΄λμ€νμ μλ κΈ°λ₯λ€μ ν¨μν μ»΄ν¬λνΈμλ μ¬μ©ν μ μλκ² λ°λ‘ Hook!
1)μν κ΄λ¦¬
useState
λ₯Ό μ¬μ©νμ¬ ν¨μν μ»΄ν¬λνΈ λ΄μμ μνλ₯Ό κ΄λ¦¬ν μ μλ€.
2)λΆμ ν¨κ³Ό μ²λ¦¬
useEffect
λ₯Ό μ¬μ©νμ¬ μ»΄ν¬λνΈμ μλͺ
μ£ΌκΈ° μ΄λ²€νΈ(λ§μ΄νΈ, μ
λ°μ΄νΈ, μΈλ§μ΄νΈ)μ λ§μΆ° λΆμ ν¨κ³Όλ₯Ό μ²λ¦¬ν μ μλ€.
3)μ»΄ν¬λνΈ κ° λ‘μ§ μ¬μ¬μ©
useContext
, useReducer
, useMemo
, useCallback
κ³Ό κ°μ Hookμ μ¬μ©νμ¬ λ‘μ§μ κ΄λ¦¬νκ³ , 컀μ€ν
Hookμ ν΅ν΄ λ‘μ§μ μ¬μ¬μ©ν μ μλ€.
κ·Έλ°μ
useCallback
, useMemo
μ κ°μ Hookμ μ¬μ©νλ©΄ λΆνμν λ λλ§μ λ°©μ§, μ±λ₯μ μ΅μ ν useMemo
λ κ° κ³μ°μ μΊμνκ³ , useCallback
μ ν¨μ μΈμ€ν΄μ€λ₯Ό μ¬μ¬μ© ν μ μκ² νλ€.
- κ°κ²°ν μ½λ π¨ κ°λ¨ν ν¨μν μ½λ λ체
- λ‘μ§ μ¬μ¬μ©μ± π¨ 컀μ€ν μΌλ‘ μ¬λ¬ μ»΄ν¬λνΈ λ‘μ§ μ¬μ¬μ©
- ν¨μννλ‘κ·Έλλ° π¨ κ°λ¨ν λ°©μμΌλ‘ μ½λ μμ±
μν λ³μμ μν μ λ°μ΄νΈ ν¨μλ₯Ό λ°ν μ»΄ν¬λνΈμμ μνλ₯Ό κ΄λ¦¬
const [count, setCount] = useState(0);
count: μν λ³μ
setCount: μνλ₯Ό μ
λ°μ΄νΈνλ ν¨μ
0: μνμ μ΄κΈ°κ°
μμΈν μ€λͺ μ μ¬κΈ°
μ»΄ν¬λνΈκ° λ λλ§λ νμ νΉμ μμ μ μνν μ μκ² ν¨
useEffect(() => {
// μ΄κ³³μ μ€νν μμ
μ μμ±
document.title = `You clicked ${count} times`;
}, [count]);
useEffect
λ λ λλ§ νλ§λ€ μ€ν, λ λ²μ§Έ μΈμμ μ λ¬λ λ°°μ΄ [count]μ μ§μ λ κ°μ΄ λ³κ²½λ λλ§ μ€ν μ)APIνΈμΆ, μ΄λ²€νΈ 리μ€λ λ±λ‘, λ± Context APIμ ν¨κ» μ¬μ©νμ¬ μ»΄ν¬λνΈ νΈλ¦¬ λ΄μμ λ°μ΄ν°λ₯Ό μ½κ² μ λ¬
const value = useContext(MyContext);
useState
μ λΉμ·νμ§λ§, 볡μ‘ν μν μ
λ°μ΄νΈ λ‘μ§μ μ²λ¦¬ν λ μ μ© useState
λ³΄λ€ κ°λ ₯ν κ΄λ¦¬
const [state, dispatch] = useReducer(reducer, initialState);
ν¨μκ° λ λλ§λ λλ§λ€ μλ‘ μμ±λλ κ²μ λ°©μ§νκ³ , μ±λ₯ μ΅μ νλ₯Ό μν΄ νΉμ ν¨μμ μΈμ€ν΄μ€λ₯Ό μ¬μ¬μ©
const memoizedCallback = useCallback(() => {
// function body
}, [dependencies]);
κ°μ΄ λ³κ²½λ λλ§ κ³μ°λ κ°μ λ°ννμ¬ λΆνμν λ λλ§μ λ°©μ§ useCallback
μ λΉμ·
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
μ»΄ν¬λνΈ λ΄μμ DOMμ μ κ·Όνκ±°λ, κ°μ΄ λ³κ²½λμ΄λ 리λ λλ§λμ§ μλλ€.
const inputRef = useRef(null);
μ΅μμμμ νΈμΆ
μ»΄ν¬λνΈ ν¨μμ μ΅μμμμλ§ νΈμΆλμ΄μΌ ν©λλ€. 쑰건문μ΄λ λ°λ³΅λ¬Έ μμμ νΈμΆ λΆκ°
React ν¨μν μ»΄ν¬λνΈ μμμ νΈμΆ
React μ»΄ν¬λνΈ ν¨μ μμμλ§ μ¬μ©ν΄μΌ νλ©°, μΌλ° JavaScript ν¨μλ ν΄λμ€ μμμλ μ¬μ©ν μ μλ€.
Hook
μ Reactμμ ν¨μν μ»΄ν¬λνΈκ° ν΄λμ€ν μ»΄ν¬λνΈμ κΈ°λ₯μ λ체νκ³ , λ κ°κ²°νκ³ ν¨μ¨μ μΈ μ½λλ₯Ό μμ±ν μ μλλ‘ λλ μ€μν κΈ°λ₯μ΄λ€.