π리μ‘νΈλ μ»΄ν¬λνΈλ₯Ό μ΄λ»κ² μ μ§ν κΉ?
리μ‘νΈλ μ»΄ν¬λνΈλ₯Ό μμ ν¨μμ²λΌ μ€νμν΅λλ€.
μ¦, μ»΄ν¬λνΈλ₯Ό λ¨μν ν¨μ νΈμΆκ³Ό κ°μ΄ μ·¨κΈν©λλ€.
νμ§λ§ μμν¨μλ 무μμ΄κ³ 리μ‘νΈλ 무μμ μν΄ μμν¨μλΌλ κ°λ μ κ°μ‘°ν κΉμ?
π§μμν¨μλ?
μμν¨μλ 리μ‘νΈμλ§ μλ κ°λ μ΄ μλ μλ°μ€ν¬λ¦½νΈ ν¨μμμλ λμ€λ λ΄μ©μ λλ€.
μμν¨μλ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§κ³ μλ ν¨μμ λλ€.
- μμ μ μΌμ μ§μ€ν©λλ€ : ν¨μκ° νΈμΆλκΈ° μ μ μ‘΄μ¬νλ κ°μ²΄λ λ³μλ λ³κ²½νμ§μμ΅λλ€.
- κ°μ μ λ ₯,κ°μ μΆλ ₯ : μ λ ₯κ°μ΄ κ°μΌλ©΄ μΆλ ₯κ°μ μΌμ ν©λλ€.
- μΈλΆ λ³μ μ°Έμ‘°λ λ³κ²½μ΄ μμ΄μΌν©λλ€
function double(number) {
return 2 * number;
}
μ ν¨μλ numberλΌλ λ§€κ°λ³μκ° λ€μ΄μ€λ©΄ νμ 2λ₯Ό κ³±νλ νκ°μ§ μΌλ§ν©λλ€.
λ°λΌμ, numberμ κ°μ μ λ ₯κ°μ΄ μ¬λ¬λ² λ€μ΄μ€λλΌλ μΆλ ₯κ°μ μΌμ ν©λλ€.
κ·Έλ κΈ° λλ¬Έμ μ ν¨μλ μμ ν©μμ λλ€.
function double(number) {
console.log(number)
return 2 * number;
}
κ·Έλ λ€λ©΄ μ ν¨μλ μμν κΉμ?
μ ν¨μμ κ²½μ° μ½μμ°½μ numberλ₯Ό λμ°λ μΌκ³Ό numberμ 2λ₯Ό κ³±νλ μΌ λκ°μ§λ₯Ό ν©λλ€.
μ λ ₯κ°μ λ°λ₯Έ μΆλ ₯κ°μ μΌμ νμ§λ§ λκ°μ§ μΌμ νλ―λ‘ μ ν¨μλ μμν¨μκ° μλλλ€.
리μ‘νΈλ μμ±λλ λͺ¨λ μ»΄ν¬λνΈκ° μμν¨μμΌκ±°λΌ κ°μ ν©λλ€
π¦ side effect
κ·ΈλΌ μμν¨μκ° μλλΌλ©΄ μ΄λ€ μΌμ΄ μΌμ΄λ κΉμ?
μ΄λ₯Ό μ¬μ΄λ μ΄ννΈ(μλμΉ μμ κ²°κ³Ό)λΌκ³ λΆλ¦ λλ€.
μ¬μ΄λ μ΄ννΈλ μμν¨μμ μ μμ λ°νλ νΉμ§μ κ°μ§κ³ μμ΅λλ€.
μλ₯Ό λ€μ΄ μΈλΆ λ³μλ₯Ό μ°Έμ‘°ν κ²½μ° μΈλΆ λ³μμ κ°μ΄ λ°λλ€λ©΄ ν¨μμ μΆλ ₯κ°μ μλμ λ€λ₯΄κ² λ¬λΌμ§κ²λλ€.
μ¬μ΄λ μ΄ννΈλ₯Ό μ°λ°νλ μ½λ
- DOM μ‘°κ° (document.querySelector)
- λΈλΌμ°μ APIνΈμΆ (setTimeout,setInterval)
- λ‘컬μ€ν λ¦¬μ§ μ κ·Ό
- μλ²μμ² (fetch, url, axios)
- μ½μ μΆλ ₯
- μνμ μ₯μμ μ½κΈ° / μ°κΈ° (Context API, Zustand, RTK)
let add = 3 function sum(number) { return add + number; }
console.log(sum(2)) // 5
add = 4
console.log(sum(2)) // 6
π Side Effect κ°μ보μ΄λ μμν¨μ
μμν¨μμ νΉμ§ μ€, μΈλΆ λ³μλ₯Ό μ°Έμ‘°νκ±°λ λ³ννλ©΄ μμν¨μμ 쑰건μμ λ²μ΄λκ² λ©λλ€.
κ·Έλ°λ° μ΄ νΉμ§μ λ°νλ κ²μ²λΌ μκΈ΄ ν¨μκ° λͺκ°μ§ μμ΅λλ€.
- props
propsλ μΌν보면 ν¨μλ΄μ μλ λ³μλκΉ μΈλΆ λ³μκ°μ보μ λλ€.
νμ§λ§ propsλ μμ μμμμ νμ μμλ‘ κ±΄λ€μ£Όλ λ°μ΄ν°μ΄λ©΄μ, immutableλ°μ΄ν°μ λλ€.
μ¦, λ³νλ λΆκ°λ₯νκ³ μμ‘΄μ±μ΄ μΆμ λλ λ°μ΄ν°μ΄κΈ° λλ¬Έμ μΈλΆλ³μκ° μλλλ€.
function Cup({ guest }) {
return Tea cup for {guest}
}
- μ§μλ³μ
μ§μ λ³μμ κ²½μ° μ»΄ν¬λνΈ μ€νμλ§λ€ λ€μ μμ±λλ κ°μ΄κΈ° λλ¬Έμ
μ»΄ν¬λνΈμ λ΄λΆν¨μ μ μ₯μμ 보면 μΈλΆ λ³μμ²λΌ 보μΌμ§λΌλ μ¬μ΄λ μ΄ννΈλ μλλλ€.
function MyComponent() {
let count = 0;
count++;
return count
}
μμ μ§μλ³μλ λ λλ§ λ λλ§λ€ countκ° 0μΌλ‘ μ΄κΈ°ν λ©λλ€.
κ·Έλ κΈ° λλ¬Έμ μ΄μ μ Mycomponentκ° νΈμΆ λ μ μ΄ μλλΌλ λ 립μ μΌλ‘ κ΄λ¦¬κ³Ό λλ λ³μμ λλ€.
κ²°κ΅ μ»΄ν¬λνΈμμ μμν¨μλ₯Ό λ§λ€λ €λ©΄ λ λλ§μ λν΄ μ΄ν΄νκ³ μλ κ²μ΄ μ€μν©λλ€.
'React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [React] react-router v7+ (2) | 2025.08.13 |
|---|---|
| [React] λ λλ§ μ€λ μ·κ³Ό μ λ°μ΄νΈ (0) | 2025.07.15 |
| [React] 리μ‘νΈκ° λ λλ§ νλ λ°©λ² (1) | 2025.07.06 |
| [React] 리μ‘νΈλ λκΉ? (0) | 2025.07.06 |
| [React] useEffect μ¬μ©νκΈ° (0) | 2025.05.13 |