λ¦¬μ•‘νŠΈ μ‹¬ν™”λ°˜ μˆ˜κ°•μ΄ 쉽지 μ•Šλ‹€. μš©μ–΄λ„ μ–΄λ ΅μ§€λ§Œ 기본적인 이해도 많이 λΆ€μ‘±ν•œ μƒνƒœλΌ λ‹¨μˆœνžˆ μ½”λ“œλ§Œ 따라 μΉ˜λŠ” μˆ˜μ€€μ΄λ‹€. 많이 λΆ€μ‘±ν•˜λ‹€κ³ λŠ” μƒκ°ν•˜κ³  μžˆμ—ˆμ§€λ§Œ 더 λ…Έλ ₯ν•΄μ•Όν•  ν•„μš”λ₯Ό 느끼게 λ˜λŠ” μ‹œμ μ΄λ‹€. νŒ€μ› 뢄듀도 λΉ„μŠ·ν•œ 어렀움을 κ²ͺκ³  κ³„μ…¨λŠ”λ°, 곡뢀에 도움이 λ˜λŠ” μ‚¬μ΄νŠΈλ‚˜ 정보λ₯Ό 많이 곡유 λ°›μ•˜λ‹€. 맀번 λŠλΌλŠ” κ±°μ§€λ§Œ ν•¨κ»˜ κ³΅λΆ€ν•˜λŠ” μ‚¬λžŒμ΄ μžˆλ‹€λŠ” 건 정말 큰 도움이 λœλ‹€. 특히 ν•œ λΆ„κ³ΌλŠ” 같은 λΆ€λΆ„μ—μ„œ 곡감을 느껴 λ§Žμ€ λŒ€ν™”λ₯Ό λ‚˜λˆ΄λ‹€. λ‘˜ λ‹€ μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°μ΄ˆμ— λŒ€ν•œ 아쉬움을 κ°–κ³  μžˆμ—ˆλŠ”λ° 진도λ₯Ό 빨리 λ‚˜κ°€μ•Όν•œλ‹€λŠ” 생각에 μ œλŒ€λ‘œ 곡뢀λ₯Ό ν•˜μ§€ λͺ»ν•˜κ³  μžˆμ—ˆλ‹€. λ―Έλ‹ˆ ν”„λ‘œμ νŠΈλ₯Ό μ•žλ‘κ³  κΈ°μ΄ˆλΌλ„ 잘 λ‹€μ Έλ†“μžλŠ” 닀짐과 ν•¨κ»˜ 쒋은 μžλ°”μŠ€ν¬λ¦½νŠΈ 기초 κ°•μ˜λ₯Ό 곡유 λ°›μ•˜λ‹€. λ‹€λ₯Έ μ‚¬λžŒλ“€μ— λΉ„ν•΄ λŠ¦μ€ 것이 λ‹Ήμ—°ν•œ 것인데 λ„ˆλ¬΄ 강박에 νœ©μ‹Έμ—¬ μžˆμ—ˆλ˜ 것 κ°™λ‹€. μ°¨κ·Όμ°¨κ·Ό 기초λ₯Ό λ‹€μ§€λ©° λ‹€μ‹œ ν•­ν•΄λ₯Ό μ‹œμž‘ν•΄λ³΄μž..!

이번 μ£Ό WIL은 라이프사이클과 λ¦¬μ•‘νŠΈ ν›…μ΄λΌλŠ” ν‚€μ›Œλ“œκ°€ μ£Όμ–΄μ‘Œλ‹€.

React의 생λͺ… μ£ΌκΈ°(LifeCylclre)


React의 생λͺ… μ£ΌκΈ°λŠ” 크게 생성(Mounting), μˆ˜μ •(Updating), 제거(Unmounting) μ„Έ λΆ€λΆ„μœΌλ‘œ λ‚˜λ‰œλ‹€. 생성은 처음으둜 μ»΄ν¬λ„ŒνŠΈλ₯Ό λΆˆλŸ¬μ˜€λŠ” 단계이닀. μˆ˜μ •μ€ μ‚¬μš©μžμ˜ 행동에 따라 데이터가 λ°”λ€Œκ±°λ‚˜ λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈκ°€ λ Œλ”λ§ 될 λ•Œ μ—…λ°μ΄νŠΈ λ˜λŠ” 단계λ₯Ό λ§ν•œλ‹€. μˆ˜μ • λ‹¨κ³„λŠ” μœ„ ν‘œμ—μ„œλ„ λ³Ό 수 μžˆλ“―μ΄ 크게 μ„Έκ°€μ§€ κ²½μš°μ— μΌμ–΄λ‚œλ‹€.

  • New Props
    props κ°€ λ°”λ€” λ•Œ
  • setState()
    state κ°€ λ°”λ€” λ•Œ
  • forceUpdate()
    κ°•μ œλ‘œ μ—…λ°μ΄νŠΈ ν–ˆμ„ λ•Œ

μΆ”κ°€μ μœΌλ‘œ λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈκ°€ μ—…λ°μ΄νŠΈ λ˜μ—ˆμ„ λ•Œ 즉, λ¦¬λ Œλ”λ§μ΄ λ˜μ—ˆμ„ λ•Œ μΌμ–΄λ‚œλ‹€. μ œκ±°λŠ” νŽ˜μ΄μ§€λ₯Ό μ΄λ™ν•˜κ±°λ‚˜, μ‚¬μš©μžμ˜ ν–‰λ™μœΌλ‘œ 인해 μ»΄ν¬λ„ŒνŠΈκ°€ ν™”λ©΄μ—μ„œ μ‚¬λΌμ§€λŠ” 단계λ₯Ό λ§ν•œλ‹€.

Reactμ—μ„œ κ³΅μ‹μ μœΌλ‘œ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ μ‚¬μš©μ„ ꢌμž₯ν•˜κΈ° μ΄μ „μ—λŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ₯Ό 주둜 μ‚¬μš©ν–ˆμ—ˆλ‹€. ν•¨μˆ˜ν˜•μ— λΉ„ν•΄ μ½”λ“œλ„ κΈΈκ³  속도도 λ”λ”˜ ν΄λž˜μŠ€ν˜• ν•¨μˆ˜λ₯Ό μ“Έ 수 밖에 μ—†μ—ˆλ˜ μ΄μœ λŠ” ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” 라이프사이클 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€. 생λͺ… μ£ΌκΈ° ν‘œμ—μ„œ μ§„ν•˜κ²Œ ν‘œμ‹œλœ constructor(), render(), componentDidMount(), componentDidUpdate(), componentWillUnmount() 이듀을 라이프사이클 ν•¨μˆ˜λΌκ³  ν•˜λŠ”λ°, λ¦¬μ•‘νŠΈλ₯Ό μ΄μš©ν•˜μ—¬ νŽ˜μ΄μ§€λ₯Ό λ§Œλ“œλŠ” 것에 μžˆμ–΄μ„œ μ—†μ–΄μ„œλŠ” μ•ˆλ˜λŠ” κΈ°λŠ₯듀이닀. μ΄λ ‡κ²Œ μ€‘μš”ν•œ ν•¨μˆ˜λ“€μ„ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” μ‚¬μš©ν•  수 μ—†μ—ˆκΈ° λ•Œλ¬Έμ— κ·Έλ™μ•ˆ ν΄λž˜μŠ€ν˜• ν•¨μˆ˜λ₯Ό μ€‘μ‹¬μœΌλ‘œ λ¦¬μ•‘νŠΈλ₯Ό μ¨μ™”λ˜ 것이닀.

React Hooks

ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ³΄λ‹€ 효율적인 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλ₯Ό 본격적으둜 μ‚¬μš©ν•  수 있게 된 λ°°κ²½μ—λŠ” λ°”λ‘œ 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])

3μ£Όμ°¨ WIL을 λ§ˆλ¬΄λ¦¬ν•˜λ©΄μ„œ...

HooksλŠ” recomposeλΌλŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μ‹œμž‘λ˜μ—ˆλ‹€κ³  ν•œλ‹€. 이λ₯Ό Reactμ—μ„œ μΈμˆ˜ν•˜μ—¬ λ‹€λ“¬μ–΄μ„œ λ‚˜μ˜€κ²Œ 된 것이 React Hooks이닀. λ‚΄μš©μ„ μ •λ¦¬ν•˜λ©΄μ„œ Hooks의 역사도 λ˜μ§šμ–΄ λ΄€λŠ”λ° μ—­μ‹œ 집단지성은 λŒ€λ‹¨ν•˜λ‹€λŠ” 생각을 ν–ˆλ‹€. λ˜ν•œ 기술의 λ°œμ „μ€ κΈ°μ‘΄ 기술의 λΆˆνŽΈν•¨μ΄λ‚˜ λΆ€μ‘±ν•œ 점듀을 λ³΄μ™„ν•˜λ € ν•  λ•Œ μ΄λ£¨μ–΄μ§„λ‹€λŠ” 것도 λŠκΌˆλ‹€.

μ΄λ ‡κ²Œ μ‹œμ‹œκ°κ° λ³€ν•˜λŠ” 기술의 λ°œμ „μ„ 따라가기 μœ„ν•΄μ„œλŠ” 곡뢀 λ˜ν•œ λŠ¦μΆ”μ§€ λ§μ•„μ•Όν•œλ‹€λŠ” 것도...πŸ˜‡

profile
κ·ΈλŠ” 특히 μš”λ¦¬ μ‹€λ ₯을 κ°–μΆ˜ μƒνƒœμ—μ„œ λ‹€λ₯Έ μ‚¬λžŒμ˜ 도움을 λ°›μ•„

0개의 λŒ“κΈ€