Components

이가리·2022λ…„ 12μ›” 5일
0
post-thumbnail

🍰 Components

πŸŽ‚ UIλ₯Ό κ΅¬μ„±ν•˜λŠ” 독립적인 ꡬ성 μš”μ†Œ, λͺ¨λ“ˆ 🍰

μ»΄ν¬λ„ŒνŠΈλŠ” 독립적이고 μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•œ μ½”λ“œ 쑰각으둜 ꡬ성 λ˜μ–΄ μžˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜μ™€ λ™μΌν•œ λͺ©μ μ„ μˆ˜ν–‰ν•˜μ§€λ§Œ λ…λ¦½μ μœΌλ‘œ μž‘λ™ν•˜κ³  HTML을 λ°˜ν™˜ν•œλ‹€. 데이터(props)λ₯Ό λ°›μ•„ λ·°(state) μƒνƒœμ— 따라 DOM Nodeλ₯Ό 좜λ ₯ν•œλ‹€.

μ»΄ν¬λ„ŒνŠΈμ—μ„œ κ°€μž₯ μ€‘μš”ν•œ 속성은 μž¬μ‚¬μš©μ„±!

μž¬μ‚¬μš©μ΄ ν•„μš”ν•œ 이유

1. κ΅¬ν˜„ μ‹œ μ‹œκ°„κ³Ό λ¦¬μ†ŒμŠ€λ₯Ό μ ˆμ•½ ν•  수 μžˆλ‹€
같은 μ½”λ“œλ₯Ό 두 번 μΉ˜μ§€ μ•ŠμŒμœΌλ‘œ μ‹œκ°„/λ¦¬μ†ŒμŠ€ μ ˆμ•½
2. 쀑볡을 쀄인닀
μ½”λ“œ μ—…λ°μ΄νŠΈ μ‹œ ν•΄λ‹Ή μ½”λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” κ³³μ—μ„œ λͺ¨λ“  μ—…λ°μ΄νŠΈκ°€ μ μš©λœλ‹€(일관성)
-> μœ μ§€λ³΄μˆ˜λ₯Ό μ‰½κ²Œ!

μ»΄ν¬λ„ŒνŠΈ μž‘μ„±

μ»΄ν¬λ„ŒνŠΈ μž‘μ„± λ°©λ²•μ—λŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ 두 가지 방법이 μžˆλ‹€.

두 μ»΄ν¬λ„ŒνŠΈμ˜ 역할은 λ™μΌν•˜μ§€λ§Œ, κ³Όκ±°μ—λŠ” μƒνƒœκ΄€λ¦¬/라이프 사이클 관리λ₯Ό 이유둜 λŒ€λΆ€λΆ„ 클래슀 μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚¬μš©ν–ˆμ§€λ§Œ ν˜„μž¬λŠ” React Hook의 μ§€μ›μœΌλ‘œ 곡식 λ¬Έμ„œμ—μ„œλ„ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ ν›…(Hook)을 ν•¨κ»˜ μ‚¬μš©ν•  것을 ꢌμž₯ν•˜κ³  μžˆλ‹€.

ν•˜μ§€λ§Œ κ³Όκ±° ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ‘œ 이루어진 ν”„λ‘œμ νŠΈλ₯Ό μ΄ν•΄ν•˜κ³  μœ μ§€λ³΄μˆ˜ ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ•Œμ•„λ‘μ–΄μ•Ό ν•œλ‹€.


🍰 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈ

ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ

function 으둜 μ •μ˜ν•˜κ³  return 문에 jsx μ½”λ“œλ₯Ό λ°˜ν™˜

  • state, lifeCycle κΈ°λŠ₯ μ‚¬μš© λΆˆκ°€λŠ₯ (->hook으둜 ν•΄κ²°)
  • λ©”λͺ¨λ¦¬ μžμ›μ„ 클래슀 μ»΄ν¬λ„ŒνŠΈλ³΄λ‹€ 덜 μ‚¬μš©ν•œλ‹€
  • 선언이 쉽고 νŽΈν•˜λ‹€

ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈ

Component 클래슀λ₯Ό 상속, render()λ©”μ†Œλ“œ μ‚¬μš©

  • state, lifeCycle κΈ°λŠ₯ μ‚¬μš© κ°€λŠ₯
  • λ©”λͺ¨λ¦¬ μžμ›μ„ 클래슀 μ»΄ν¬λ„ŒνŠΈλ³΄λ‹€ μ’€ 더 μ‚¬μš©ν•œλ‹€
  • μž„μ˜ λ©”μ„œλ“œ μ •μ˜ κ°€λŠ₯

차이점

state, μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œ λ°”λ€” 수 μžˆλŠ” κ°’

state) ν΄λž˜μŠ€ν˜•

  • constructor μ•ˆμ—μ„œ this.state 초기 κ°’ μ„€μ •
  • constructor 없이 λ°”λ‘œ μ΄ˆκΈ°κ°’ 섀정도 κ°€λŠ₯
  • 객체 ν˜•μ‹μ˜ state
  • this.setState ν•¨μˆ˜λ‘œ state κ°’ λ³€κ²½

state) ν•¨μˆ˜ν˜•

  • useState ν•¨μˆ˜ μ‚¬μš©
  • useState ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ 배열이 λ°˜ν™˜λ˜λŠ”λ° 첫 번째 값이 ν˜„μž¬ μƒνƒœ
  • 두 번째 값은 μƒνƒœλ₯Ό λ°”κΎΈμ–΄ μ£ΌλŠ” ν•¨μˆ˜

props, 읽기 μ „μš©μœΌλ‘œ μ»΄ν¬λ„ŒνŠΈ 속성을 μ„€μ •ν•  λ•Œ μ‚¬μš©

props) ν΄λž˜μŠ€ν˜•

  • this.propsλ₯Ό 톡해 값을 뢈러옴
  • λΆ€λͺ¨ 객체의 ν‚€ κ°’, μžμ‹ props ν™œμš©

props) ν•¨μˆ˜ν˜•

  • propsλ₯Ό 뢈러올 ν•„μš”μ—†μ΄ 맀개 λ³€μˆ˜λ‘œ λ°”λ‘œ 호좜 κ°€λŠ₯

LifeCycle API, μ»΄ν¬λ„ŒνŠΈκ°€ DOM μœ„μ— μƒμ„±λ˜κΈ° μ „ ν›„ 및 μƒνƒœ μ—…λ°μ΄νŠΈ ν•˜κΈ° μ „ ν›„λ‘œ μ‹€ν–‰λ˜λŠ” λ©”μ†Œλ“œ

LifeCycle) ν•¨μˆ˜ν˜•

  • useEffect()λ₯Ό μ΄μš©ν•΄ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ LifeCycle λ©”μ„œλ“œλ₯Ό λŒ€μ²΄ ν•  수 μžˆλ‹€.

이벀트 핸듀링

이벀트 핸듀링) ν΄λž˜μŠ€ν˜•

  • ν•¨μˆ˜ μ„ μ–Έ μ‹œ ν™”μ‚΄ν‘œ ν•¨μˆ˜λ‘œ λ°”λ‘œ μ„ μ–Έ κ°€λŠ₯
  • μš”μ†Œμ— 적용 μ‹œ thisλ₯Ό 뢙인닀

이벀트 핸듀링) ν•¨μˆ˜ν˜•

  • const ν‚€μ›Œλ“œ + ν•¨μˆ˜ ν˜•νƒœλ‘œ μ„ μ–Έ
  • μš”μ†Œμ— μ μš©ν•˜κΈ° μœ„ν•΄ thisκ°€ ν•„μš” μ—†μŒ


μ°Έκ³ 

https://www.w3schools.com/react/react_components.asp

https://born-dev.tistory.com/27

https://brunch.co.kr/@blckschrl/66

https://velog.io/@sdc337dc/0.ν΄λž˜μŠ€ν˜•-μ»΄ν¬λ„ŒνŠΈ

https://tecoble.techcourse.co.kr/post/2021-11-01-component-dependency/

profile
μ ˆλŒ€λ‘œ ν•  수 있음

0개의 λŒ“κΈ€