[React] React Intro

React

  • React๋ž€ UI(User Interface)๋ฅผ Components ๋‹จ์œ„๋กœ ๋ณด์—ฌ์ฃผ๊ณ  Event์— ๋ฐ˜์‘ํ•˜๋„๋ก ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€๋Š” Library
  • React๋Š” components๋กœ ์ด๋ฃจ์–ด์ง„ UI Lib
  • 2013๋…„ Face Book ์—์„œ ๋งŒ๋“ค์–ด์ง
  • ํŽ˜์ด์ง€๋ฅผ ๋” ๋น ๋ฅด๊ณ , ์‰ฝ๊ณ , ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฆฌ์•กํŠธ๋Š” ํŠธ๋ฆฌ ํ˜•์‹์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ ๋‚ด๋ถ€ ์ƒํƒœ State, ์™ธ๋ถ€๋กœ ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ์ƒํƒœ Props, ๋‚˜ํƒ€๋‚ด๋Š” render๋กœ ๊ตฌ์„ฑ
  • ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค re-render, ๋ฆฌ์•กํŠธ์˜ Virtual DOM Tree, Previous DOM Tree ๋ฅผ ๋น„๊ตํ•˜์—ฌ DOM tree์— ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ํ™”๋ฉด์— ์—…๋ฐ์ดํŠธ
  • 2019๋…„ ๋ถ€ํ„ฐ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉ
  • React Hook์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜์ด๋‹ค! ์ฆ‰, ๋ฆฌ์•กํŠธ์˜ State์™€ Lifecycle์— ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ๋“ค์„ ๊ฐˆ๊ณ ๋ฆฌ์ฒ˜๋Ÿผ ์—ฐ๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋“ค์ด๋‹ค. (Hooks are functions that let you "hook into" React state and lifecycle feature from function component.)
// Function Copmonent
// React Hooks ๋ฅผ ์ด์šฉํ•ด ๋กœ์ง ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ
function LikeButton(props) {
  const [likes, setLikes] = useState(0);
  return <button>{likes}</button>;
}
// Class Component
// ํด๋ž˜์Šค์˜ ์–ด๋ ค์›€, this ๋ฐ”์ธ๋”ฉ ์ด์Šˆ, ๋กœ์ง๋“ค์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์›Œ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ
class LikeButton extends Component {
  state = {
    numberOfLikes: 0, State
  };
  render() {
    return <button>
      {this.state.numberOfLikes}
      <button/>;
  }
}

์ถ”๊ฐ€๋‚ด์šฉ

  1. ํ”„๋ ˆ์ž„์›Œํฌ
    ๋ผˆ๋Œ€๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๊ณ  ๊ทธ ์•ˆ์—์„œ ๊ตฌํ˜„(ANGULAR, Vue)
  2. Lib
    ๊ตฌํ˜„ํ•˜๋Š” ๋„๊ตฌ(React)
  3. components
    ์„œ๋กœ ๋…๋ฆฝ์ (independent), ๊ณ ๋ฆฝ(isolated), ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ(resusable)
  4. ์ตœ์ƒ์œ„ component = root
  5. BABEL
    ์ตœ์‹  ์ž๋ฐ” ๋ฌธ๋ฒ•์„ โ†’ ์˜›๋‚  ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๋Œ ์ˆ˜ ์žˆ๋„๋ก ์˜›๋‚  ๋ฒ„์ „์œผ๋กœ ๋ณ€ํ™˜ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ, JSX ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜
  6. Webpack
    ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“ˆ์„ Bundling ํ•˜๋Š” ์—ญํ• 
  7. ESLint
    ์ฝ”๋“œ์— ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œ
  8. Jest
    JavaScript๋ฅผ Unit ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํ…Œ์ŠคํŒ… framework
  9. PostCSS
    CSS ์ „์ฒ˜๋ฆฌ๊ธฐ, ์œ ์šฉํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋งŽ์•„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
  10. nodeJS
    Browser ๋ฐ–์—์„œ JavaSript๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” JavaScript ์‹คํ–‰ ํ™˜๊ฒฝ(FrameWork)
  11. npm
    ํ•„์š”ํ•œ Lib๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌ(์„ค์น˜, ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ), package.json
  12. npx
    ์›ํ•˜๋Š” Lib๋˜๋Š” Package๋ฅผ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  13. yarn
    facebook์—์„œ ๋งŒ๋“  package manager, npm์„ ๋ณด์™„ํ•˜์—ฌ ๋งŒ๋“ฆ
  14. ๋ธŒ๋ผ์šฐ์ €๋Š” HTML, CSS, JS๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฆฌ์•กํŠธ ์†Œ์Šค๋ฅผ Babel์ด ์ˆœ์ˆ˜ JS๋กœ ๋ณ€ํ™˜, ๋ณ€ํ™˜๋œ ์†Œ์Šค๋ฅผ HTML๊ณผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด react-dom

Categories:

Updated:

Leave a comment