[FE - ConnecTo] DAY71 TIL๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป

JUNYยท2022๋…„ 10์›” 24์ผ
0

๐Ÿ“šZeroBase ConnecTo Front-End

๋ชฉ๋ก ๋ณด๊ธฐ
51/53
post-thumbnail

22.10.24 ์Šค์Šค๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š
ํ”ผ๋“œ๋ฐฑ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค! ๐ŸŠ

React๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ€์ƒ๋”(Virtual DOM)์ด๋ผ๋Š” ๊ฒƒ์„ ํ†ตํ•ด ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ.


๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library) vs ํ”„๋ ˆ์ž„์›Œํฌ(Framework)

ํ”„๋ ˆ์ž„์›Œํฌ : Web Application์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•จ.

Web Application์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค

  • ๋ผ์šฐํŒ…
  • ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ
  • API ํ˜ธ์ถœ
  • ๋นŒ๋“œ ์‹œ์Šคํ…œ

๋ฆฌ์•กํŠธ๋Š” UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ๊ตฌ์ถ•ํ•ด์•ผํ•จ!

  • ๋ผ์šฐํŒ… : react-router
  • ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ : redux, recoil, redux-thunk, redux-saga
  • API ํ˜ธ์ถœ : axios
  • ๋นŒ๋“œ ์‹œ์Šคํ…œ

์ด๋žฌ์„ ๋•Œ์˜ ์žฅ์ ๊ณผ ๋‹จ์ ์ด ์žˆ์Œ.

  • ์žฅ์  ๊ฐ์ž ํ™˜๊ฒฝ์— ๋งž๊ฑฐ๋‚˜, ๋งˆ์Œ์— ๋“œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ.
  • ๋‹จ์  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ‘ํ•˜๊ณ  ๋ฐฐ์›Œ์•ผํ•ด์„œ ์ดˆ๊ธฐ ์ง„์ž… ์žฅ๋ฒฝ์ด ์žˆ์Œ.

React.createElement() ํ•จ์ˆ˜

const element = document.createElement(tagName[, options])
=> ์ง€์ •ํ•œ tagName์˜ HTML ์š”์†Œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•จ

const element = React.createElement(component, props, ...children)
=> ReactElement๋ฅผ ๋ฐ˜ํ™˜
  • component (๋ฌธ์ž์—ด ๋˜๋Š” ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ) ๋ฌธ์ž์—ด์ผ ๋•Œ๋Š” HTML ํƒœ๊ทธ๋ฅผ ์˜๋ฏธํ•จ ex)โ€divโ€ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ex)โ€FollowingButtonโ€
  • props (component๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜๋“ค) ex) style, classNameโ€ฆ
  • ...children (component๊ฐ€ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ๋‚ด๋ถ€ ์ปดํฌ๋„ŒํŠธ) ex) โ€œfollowingโ€ ๋“ฑ์˜ ํ…์ŠคํŠธ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ex) โ€œFollowingButtonโ€ ex) React.createElement(โ€pโ€, null, โ€œhelloโ€)
ReactDOM.render() ํ•จ์ˆ˜
=> ReactElement๋ฅผ ๋ฃจํŠธ์˜ DOM ๋…ธ๋“œ์— ๋ Œ๋”๋ง ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•จ
profile
์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž๐ŸŒผ

0๊ฐœ์˜ ๋Œ“๊ธ€