π€ μμ§log π€
[REACT] HOOK λ³Έλ¬Έ
Hooks
λ 리μ‘νΈ v16.8 μ μλ‘ λμ λ κΈ°λ₯μΌλ‘μ, ν¨μν μ»΄ν¬λνΈμμλ μν κ΄λ¦¬λ₯Ό ν μ μλ useState, κ·Έλ¦¬κ³ λ λλ§ μ§ν μμ μ μ€μ νλ useEffect λ±μ κΈ°λ₯λ±μ μ 곡νμ¬ κΈ°μ‘΄μ ν¨μν μ»΄ν¬λνΈμμ ν μ μμλ λ€μν μμ μ ν μ μκ² ν΄μ€λ€.
βοΈ useState
import { useState } from 'react'
const [λ³μ, set(λλ¬Έμ)λ³μ] = useState('');
- setν¨μμ μμ κ° prev( ) μ λ£κ³ μΆμΌλ©΄ μ½λ°±ν¨μλ₯Ό μ¬μ©ν΄μΌνλ€.
- filter ν¨μλ μ½λ°± ν¨μμ 쑰건μ ν΄λΉνλ λͺ¨λ μμκ° μλ λ°°μ΄μ μλ‘ μμ±νλ κΈ°λ₯μ νλ€.
import { useState } from 'react'
const Counter2 = () => {
const [number, setNumber] = useState(7)
const handleNumber = (n) => setNumber((prev) => prev + n)
// μ΄λ€ ν¨μλ₯Ό λ§λ€μ§ μκ°νκ³ μ€κ³ν΄μΌ μ¬νμ© λ± ν μ μλ€.
return (
<>
<h1>νμ¬ μΉ΄μ΄ν° κ°μ {number} μ
λλ€.</h1>
<button onClick={() => handleNumber(1)}>+1</button>
<button onClick={() => handleNumber(-1)}>-1</button>
<button onClick={() => handleNumber(7)}>+7</button>
<button onClick={() => handleNumber(-4)}>-4</button>
</>
)
}
export default Counter2
π useState μ¬λ¬λ² μ¬μ©νκΈ°
- νλμ useState ν¨μλ νλμ μν κ°λ§ κ΄λ¦¬λ₯Ό ν μ μκΈ° λλ¬Έμ κ΄λ¦¬ν΄μΌ ν μνκ° μ¬λ¬ κ°λΌλ©΄ useState λ₯Ό μ¬λ¬λ² μ¬μ©νλ©΄ λλ€.
import { useState } from 'react'
const Info = () => {
const [name, setName] = useState('')
const [nickname, setNickname] = useState('')
const handleChangeName = (e) => {
setName(e.target.value)
}
const handleChangeNickame = (e) => {
setNickname(e.target.value)
}
return (
<>
<input value={name} onChange={handleChangeName} />
<input value={nickname} onChange={handleChangeNickame} />
<h1>μ΄λ¦: {name} </h1>
<h1>λλ€μ: {nickname} </h1>
</>
)
}
export default Info
βοΈ useEffect
useEffect λ λ λλ§ λ λ λ§λ€ νΉμ μν©μμλ§ ν¨μκ° μΌμ΄λ μ μλλ‘ μ μ΄λμ΄ μλ€.
- μ»΄ν¬λνΈκ° μ΅μ΄ λ λλ§ λ λ νλ²λ§ μ€ννκ³ μΆμλ μ¬μ©
- μ΄λ€ λ³μκ° κ°μ΄ λ°λλλ§λ€ ν¨μλ₯Ό μ€ννκ³ μΆμλ μ¬μ©
useEffect( () => {
}, []); // λλ²μ§Έ parameter μΌλ‘ μ λ¬λλ λ°°μ΄ ([])
// λ°°μ΄ μμλ useState λ₯Ό ν΅ν΄ κ΄λ¦¬νκ³ μλ μνλ₯Ό λ£μ΄μ€λ λκ³ ,
// props λ‘ μ λ¬λ°μ κ°μ λ£μ΄μ£Όμ΄λ λλ€.
- useEffect λ κΈ°λ³Έμ μΌλ‘ λ λλ§ λκ³ λ μ§νλ§λ€ μ€νλλ©°, λλ²μ§Έ νλΌλ―Έν° λ°°μ΄μ 무μμ λ£λλμ λ°λΌ μ€νλλ μ‘°κ±΄μ΄ λ¬λΌμ§λ€.
βοΈ useRef
useRef Hook μ ν¨μν μ»΄ν¬λνΈμμ ref λ₯Ό μ½κ² μ¬μ© ν μ μκ² ν΄μ€λ€.
- λ λλ§μ΄λ μκ΄μλ λ³μλ₯Ό μ μΈν λ μ¬μ© ( λ‘컬 λ³μ )
- DOM λ Έλλ React μ리먼νΈμ μ§μ μ κ·Ό ν μ μλ€.
βοΈ λ·μ 리 ν¨μ ( clean up )
μ»΄ν¬λνΈκ° μΈλ§μ΄νΈλκΈ° μ μ΄λ, μ λ°μ΄νΈ λκΈ° μ§μ μ μ΄λ ν μμ μ μννκ³ μΆλ€λ©΄ useEffect μμ λ·μ 리(cleanup) ν¨μλ₯Ό λ°νν΄μ£Όμ΄μΌ νλ€.
useEffect(() => {
console.log('');
return () => { // clean up ν¨μ
};
});
// λ·μ 리 ν¨μκ° νΈμΆ λ λμλ μ
λ°μ΄νΈ λκΈ° μ§μ μ κ°μ 보μ¬μ€λ€.
βοΈ useMemo
useMemo λ₯Ό μ¬μ©νλ©΄ ν¨μν μ»΄ν¬λνΈ λ΄λΆμμ λ°μνλ μ°μ°μ μ΅μ ν ν μ μλ€.
βοΈ useCallback
useCallback μ useMemoμ μλΉν λΉμ·ν ν¨μμ΄κ³ , μ£Όλ‘ λ λλ§ μ±λ₯μ μ΅μ νν΄μΌ νλ μν©μμ μ¬μ©νλλ° useCallbackμ μ¬μ©νλ©΄ μ΄λ²€νΈ νΈλ€λ¬ ν¨μλ₯Ό νμν λλ§ μμ± ν μ μλ€.
- ν¨μ μ μΈ κ³Όμ μ μ€μΌλ μ¬μ©
'π React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[REACT] μ΄λ²€νΈ νΈλ€λ¬ ( Event handler ) (0) | 2022.10.07 |
---|---|
[REACT] λ°λ³΅ ( Iteration ) (0) | 2022.10.07 |
[REACT] SCSS (0) | 2022.10.06 |
[REACT] SPA μ async (0) | 2022.10.06 |
[REACT] useEffectκ° 2λ²μ€νλ λ (0) | 2022.10.06 |