리μ‘νΈ μ¬νλ° μκ°μ΄ μ½μ§ μλ€. μ©μ΄λ μ΄λ ΅μ§λ§ κΈ°λ³Έμ μΈ μ΄ν΄λ λ§μ΄ λΆμ‘±ν μνλΌ λ¨μν μ½λλ§ λ°λΌ μΉλ μμ€μ΄λ€. λ§μ΄ λΆμ‘±νλ€κ³ λ μκ°νκ³ μμμ§λ§ λ λ Έλ ₯ν΄μΌν νμλ₯Ό λλΌκ² λλ μμ μ΄λ€. νμ λΆλ€λ λΉμ·ν μ΄λ €μμ κ²ͺκ³ κ³μ ¨λλ°, 곡λΆμ λμμ΄ λλ μ¬μ΄νΈλ μ 보λ₯Ό λ§μ΄ 곡μ λ°μλ€. λ§€λ² λλΌλ κ±°μ§λ§ ν¨κ» 곡λΆνλ μ¬λμ΄ μλ€λ 건 μ λ§ ν° λμμ΄ λλ€. νΉν ν λΆκ³Όλ κ°μ λΆλΆμμ 곡κ°μ λκ»΄ λ§μ λνλ₯Ό λλ΄λ€. λ λ€ μλ°μ€ν¬λ¦½νΈ κΈ°μ΄μ λν μμ¬μμ κ°κ³ μμλλ° μ§λλ₯Ό 빨리 λκ°μΌνλ€λ μκ°μ μ λλ‘ κ³΅λΆλ₯Ό νμ§ λͺ»νκ³ μμλ€. λ―Έλ νλ‘μ νΈλ₯Ό μλκ³ κΈ°μ΄λΌλ μ λ€μ Έλμλ λ€μ§κ³Ό ν¨κ» μ’μ μλ°μ€ν¬λ¦½νΈ κΈ°μ΄ κ°μλ₯Ό 곡μ λ°μλ€. λ€λ₯Έ μ¬λλ€μ λΉν΄ λ¦μ κ²μ΄ λΉμ°ν κ²μΈλ° λ무 κ°λ°μ ν©μΈμ¬ μμλ κ² κ°λ€. μ°¨κ·Όμ°¨κ·Ό κΈ°μ΄λ₯Ό λ€μ§λ©° λ€μ νν΄λ₯Ό μμν΄λ³΄μ..!
μ΄λ² μ£Ό WILμ λΌμ΄νμ¬μ΄ν΄κ³Ό 리μ‘νΈ ν μ΄λΌλ ν€μλκ° μ£Όμ΄μ‘λ€.
Reactμ μλͺ
μ£ΌκΈ°λ ν¬κ² μμ±(Mounting), μμ (Updating), μ κ±°(Unmounting) μΈ λΆλΆμΌλ‘ λλλ€. μμ±μ μ²μμΌλ‘ μ»΄ν¬λνΈλ₯Ό λΆλ¬μ€λ λ¨κ³μ΄λ€. μμ μ μ¬μ©μμ νλμ λ°λΌ λ°μ΄ν°κ° λ°λκ±°λ λΆλͺ¨ μ»΄ν¬λνΈκ° λ λλ§ λ λ μ
λ°μ΄νΈ λλ λ¨κ³λ₯Ό λ§νλ€. μμ λ¨κ³λ μ νμμλ λ³Ό μ μλ―μ΄ ν¬κ² μΈκ°μ§ κ²½μ°μ μΌμ΄λλ€.
μΆκ°μ μΌλ‘ λΆλͺ¨ μ»΄ν¬λνΈκ° μ λ°μ΄νΈ λμμ λ μ¦, 리λ λλ§μ΄ λμμ λ μΌμ΄λλ€. μ κ±°λ νμ΄μ§λ₯Ό μ΄λνκ±°λ, μ¬μ©μμ νλμΌλ‘ μΈν΄ μ»΄ν¬λνΈκ° νλ©΄μμ μ¬λΌμ§λ λ¨κ³λ₯Ό λ§νλ€.
Reactμμ 곡μμ μΌλ‘ ν¨μν μ»΄ν¬λνΈμ μ¬μ©μ κΆμ₯νκΈ° μ΄μ μλ ν΄λμ€ν μ»΄ν¬λνΈλ₯Ό μ£Όλ‘ μ¬μ©νμλ€. ν¨μνμ λΉν΄ μ½λλ κΈΈκ³ μλλ λλ ν΄λμ€ν ν¨μλ₯Ό μΈ μ λ°μ μμλ μ΄μ λ ν¨μν μ»΄ν¬λνΈμμλ λΌμ΄νμ¬μ΄ν΄ ν¨μλ₯Ό μ¬μ©ν μ μκΈ° λλ¬Έμ΄λ€. μλͺ μ£ΌκΈ° νμμ μ§νκ² νμλ constructor(), render(), componentDidMount(), componentDidUpdate(), componentWillUnmount() μ΄λ€μ λΌμ΄νμ¬μ΄ν΄ ν¨μλΌκ³ νλλ°, 리μ‘νΈλ₯Ό μ΄μ©νμ¬ νμ΄μ§λ₯Ό λ§λλ κ²μ μμ΄μ μμ΄μλ μλλ κΈ°λ₯λ€μ΄λ€. μ΄λ κ² μ€μν ν¨μλ€μ ν¨μν μ»΄ν¬λνΈμμλ μ¬μ©ν μ μμκΈ° λλ¬Έμ κ·Έλμ ν΄λμ€ν ν¨μλ₯Ό μ€μ¬μΌλ‘ 리μ‘νΈλ₯Ό μ¨μλ κ²μ΄λ€.
ν΄λμ€ν μ»΄ν¬λνΈλ³΄λ€ ν¨μ¨μ μΈ ν¨μν μ»΄ν¬λνΈλ₯Ό 본격μ μΌλ‘ μ¬μ©ν μ μκ² λ λ°°κ²½μλ λ°λ‘ Hooksμ λ±μ₯μ΄ μ리νκ³ μλ€. ν¨μν μ»΄ν¬λνΈλ λΌμ΄ν μ¬μ΄ν΄ ν¨μλ₯Ό μ¬μ©ν μ μμκΈ° λλ¬Έμ stateλ₯Ό κ°μ§ μ μμλ€. κ·Έλ¬λ Hooksμ λ±μ₯κ³Ό ν¨κ» ν΄λμ€ν μ»΄ν¬λνΈμμ ν μ μλ κ² λ³΄λ€ λ κΉλνκ³ κ°κ²°νκ² stateλ₯Ό κ΄λ¦¬ν μ μκ² λμλ€. μλμ μμλ₯Ό 보면 κ·Έ μ°¨μ΄λ₯Ό λ νμ°νκ² μ μ μλ€.
// ν΄λμ€ μ»΄ν¬λνΈμμ λΌμ΄ν μ¬μ΄ν΄ ν¨μλ₯Ό μ΄μ©
componentDidMount() {
this.updateLists(this.props.id)
}
componenteDidUpdate(prevProps) {
if (prevProps.id !== this.props.id) {
this.updateLists(this.props.id)
}
}
updateLists = (id) => {
fetchLists(id)
.then((lists) => this.setState({
lists
}))
}
// ν¨μν μ»΄ν¬λνΈμμ React Hooksλ₯Ό μ΄μ©
useEffect(() => {
fetchLists(id)
.then((repos) => {
setRepos(repos)
})
}, [id])
Hooksλ recomposeλΌλ λΌμ΄λΈλ¬λ¦¬μμ μμλμλ€κ³ νλ€. μ΄λ₯Ό Reactμμ μΈμνμ¬ λ€λ¬μ΄μ λμ€κ² λ κ²μ΄ React Hooksμ΄λ€. λ΄μ©μ μ 리νλ©΄μ Hooksμ μμ¬λ λμ§μ΄ λ΄€λλ° μμ μ§λ¨μ§μ±μ λλ¨νλ€λ μκ°μ νλ€. λν κΈ°μ μ λ°μ μ κΈ°μ‘΄ κΈ°μ μ λΆνΈν¨μ΄λ λΆμ‘±ν μ λ€μ 보μνλ € ν λ μ΄λ£¨μ΄μ§λ€λ κ²λ λκΌλ€.
μ΄λ κ² μμκ°κ° λ³νλ κΈ°μ μ λ°μ μ λ°λΌκ°κΈ° μν΄μλ κ³΅λΆ λν λ¦μΆμ§ λ§μμΌνλ€λ κ²λ...π