๐Ÿ“š Study/JS, JQuery

[React JS][๋‹ˆ์ฝ” ์ฝ”๋”ฉ] THE BASICS OF REACT

kkh1902 2022. 1. 29. 20:28
728x90
๋ฐ˜์‘ํ˜•

2.0 Introduction

  • ๋ฐ”๋‹๋ผ JS ์ฝ”๋“œ์™€ React JS ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•ด๋ณผ ๊ฑฐ๋‹ค.
  • React JS ๋Š” UI๋ฅผ interactiveํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์คŒ
  •  
  • ํ™”๋ฉด์— ๋ฒ„ํŠผ ํ•˜๋‚˜์™€ ํ…์ŠคํŠธ ํ•˜๋‚˜๋งŒ ์žˆ์„๊ฑฐ๋‹ค.
  • ํ™”๋ฉด์˜ ํ…์ŠคํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ๋‹ค.
  • ํด๋ฆญํ•  ๋•Œ๋งˆ๋‹ค ํ™”๋ฉด์˜ ํ…์ŠคํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์„œ ํ•œ๋ฒˆ ๋‘๋ฒˆ ๋ช‡๋ฒˆ์ด๋“  ํด๋ฆญ ๋˜์—ˆ๋‹ค๊ณ  ๋‚˜์˜จ๋‹ค.
  •  
  • ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ณ (HTML) ์ด ๋ฒ„ํŠผ์„ HTML์—์„œ ์ฐพ์•„์•ผ ํ•˜๋‹ˆ๊นŒ id๋‚˜ class๋ฅผ ์ฃผ์–ด์•ผ ๋œ๋‹ค.
  • Javascript์—์„œ ๊ทธ ๋ฒ„ํŠผ์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
  • ๊ทธ๋ž˜์„œ document.getElementById๋‚˜ querySelector ๋“ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ทธ๋‹ค์Œ์œผ๋กœ button.addEventLister๋ฅผ ํ•˜๊ณ  function์„ ์‹คํ–‰ํ•ด์•ผ ํ• ๊ฑฐ๋‹ค.
  •  
  • React JS ํŒ€์€ ์ด๊ฑธ ์•ˆ๋‹ค. ๋ฒ„ํŠผ์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ ๋ฌด์—‡์ด ํ•„์š”ํ•œ์ง€ ์•Œ๊ณ  ํด๋ฆญ์„ ๊ฐ์ง€ํ•œ๋Š”๋ฐ ํ•„์š”ํ•œ ๊ฒƒ ๊ทธ๋“ค์ด ์ด์ž‘์—…๋“ค์— ๋Œ€ํ•œ ์ง€๋ฆ„๊ธธ์„ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด?
  • React JS๋Š” ์•„์ฃผ ์ข‹์€ ์•„์ด๋””์–ด๋“ค์„ ๋ชจ์•„๋‘” ๊ฒƒ์ด๋‹ค.

2.1 Before React

  • ์ด๋ฒˆ์—๋Š” ์•„์ฃผ ์ž‘์€ ๋ฐ”๋‹๋ผ JS ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด ๋ณผ๊ฑฐ๋‹ค.
  • ๋ฒ„ํŠผ์„ ๋ช‡๋ฒˆ ํด๋ฆญํ–ˆ๋Š”์ง€ ์„ธ๋Š” ์–ดํ”Œ์ด๋‹ค.
  • ์•„์ฃผ ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ์ด ๊ณผ์ •์—์„œ React JS๋กœ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ ๋“ค์ด ๋“œ๋Ÿฌ๋‚  ๊ฑฐ๋‹ค.
  • ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์ธ ๋ฐ”๋‹๋ผ JS๋กœ ์ž‘์—…ํ•ด์˜จ ๋ฐฉ์‹์ด๋‹ค.
  • counter = counter +1
  • ์ž‘๋™์€ ํ•˜๋‚˜ ํŽ˜์ด์ง€์— ๋ฐ˜์˜๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.
  • ์™œ๋ƒํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ฐ”๋€Œ๋”๋ผ๋„ HTML์ด ์ƒˆ๋กœ๊ณ ์นจ ๋˜์ง€ ์•Š๋Š”๋‹ค
  • ์ฒซ๋ฒˆ์งธ๋กœ HTML์„ ๋งŒ๋“ค๊ณ  ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„ Javascript์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค.
  • ์„ธ๋ฒˆ์งธ ๋‹จ๊ณ„ event๋ฅผ ๊ฐ์ง€ํ•˜๊ณ 
  • ๋งˆ์ง€๋ง‰์œผ๋กœ ์ค‘์š”ํ•œ ๊ฒƒ! HTML์„ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒƒ
  • ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…ํ•˜๋‹ค๊ฐ€๋Š” ๊ณ„์† ๊ฐ€์ ธ์™€์„œ ๊ณ„์† event lister๋ฅผ ๋‹ฌ๊ณ 
  • handleClick ๋งŒ๋“ค๊ณ  handleSecondClick๋งŒ๋“ค๊ณ 
  • ๋” ํŽธ๋ฆฌํ•˜๊ณ  ๋” ๋‚˜์€ ์•„์ด๋””์–ด์ด๋ฉฐ , ์ข€ ๋” ์„ค๊ณ„๋œ ๋ฐฉ์‹์„ ๋ณด์—ฌ์ค„๊ฑฐ๋‹ค.
  • React JS๋กœ ์ž‘์—…ํ•œ ์ฝ”๋“œ์™€ ๋น„๊ตํ•˜๋ ค ํ•œ๋‹ค.
  • React JS ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘๊ฐœ์˜ javascript ์ฝ”๋“œ๋ฅผ importํ•ด์•ผํ•œ๋‹ค.
  • react ์™€ react-dom
  • https://unpkg.com/react@17.0.2/umd/react.production.min.js
  • script ํƒœ๊ทธ๋ฅผ ์—ด๊ณ , src์— ํ•ด๋‹น url์„ ๋„ฃ์–ด์•ผํ•œ๋‹ค.
  • React์˜ ๊ทœ์น™์€ ๋จผ์ง€ React๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ•˜๋Š”์ง€
  • ๋์œผ๋กœ ์–ด๋–ป๊ฒŒ React๊ฐ€ ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋Œ€์ฒดํ•˜๋Š”์ง€ ๋ณด์ž

2.2 Our First React Element

  • React JS์˜ ๊ทœ์น™ ์ค‘ ํ•˜๋‚˜๋Š” HTML์„ ์ดํŽ˜์ด์ง€์— ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ทธ ๋Œ€์‹ ์—, ์šฐ๋ฆฌ๋Š” Javascript ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฑฐ๋‹ค.
  • Javascript ์™€ React JS๋ฅผ ์ด์šฉํ•˜์—ฌ element๋ฅผ ์ƒ์„ฑํ•  ๊ฑฐ๋‹ค. ์ด๊ฑด ์ •๋ง ์ค‘์š”ํ•˜๋‹ค.
  • ์ด๋ฒˆ ๋น„๋””์˜ค์—์„œ๋Š” React Js๋กœ element๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์–ด๋ ค์šด ๋ฐฉ๋ฒ•์„ ๋จผ์ € ๋ณด์—ฌ์ค„๊ฑฐ๋‹ค. ์ด๋ฒˆ์— ๋ณด์—ฌ์ค„ ๋ฐฉ์‹์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž‘์—…ํ•˜๋Š” ๋ฐฉ์‹์€ ์•„๋‹ˆ๋‹ค.
  • ์–ธ์ œ๋‚˜ ๋” ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ  ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ฒŒ์œผ๋ฅด์ง€ ๋„๊ตฌ๋ฅผ ์ œ์ž‘ํ•ด์„œ ์ข€ ๋” ์ƒ์‚ฐ์ ์ผ ์ˆ˜ ์žˆ์„ ๊ฑฐ๋‹ค.
  • ์‰ฌ์šด ๋ฐฉ์‹์„ ํ•˜๊ธฐ ์ „์— ์–ด๋ ค์šด ๋ฐฉ์‹์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.
  • ์–ด๋ ค์šด ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๋ฉด์„œ, React JS ์˜ ๋ณธ์งˆ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ๋‹ค.
const span = React.createElement("span");
  • ( ) ๊ด„ํ˜ธ ์•ˆ์— ์ ๋Š” ๊ฒƒ์€ ์—ฌ๋Ÿฌ๋ถ„์ด ์ƒ์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” HTML ํƒœ๊ทธ์™€ ๋˜‘๊ฐ™์€ ์ด๋ฆ„์ด์–ด์•ผ๋งŒ ํ•œ๋‹ค.
  • React JS๋กœ element๋ฅผ ์ƒ์„ฑํ•œ ๊ฑฐ๋‹ค .
  • span์€ ์ƒ์„ฑ๋๋Š”๋ฐ ํŽ˜์ด์ง€์— ๋‚˜ํƒ€๋‚˜์ง€๋Š” ์•Š์Œ
  • React JS๊ฐ€ HTML์„ ์ƒ์„ฑํ•  ๊ฑฐ๋‹ค.
  • ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด react-dom์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
  • React JS๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„์ฃผ interactiveํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” library์ด๊ณ (์—”์ง„)
  • react-dom์€ library ๋˜๋Š” package์ด๋‹ค.
  • react-dom ์€ ๋ชจ๋“  React element๋“ค์€ HTML body์— ๋‘˜ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • ์ง„์งœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • render์˜ ์˜๋ฏธ๋Š” ์—ฌ๊ธฐ React element๋ฅผ ๊ฐ€์ง€๊ณ  HTML๋กœ ๋งŒ๋“ค์–ด ๋ฐฐ์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค€๋‹ค.
  • reactDOM์—๊ฒŒ ์–ด๋””์— span์„ ๋‘˜ ๊ฒƒ์ธ์ง€ ์•Œ๋ ค์ค˜์•ผํ•œ๋‹ค.
  • span์„ root์•ˆ์— render(๋ฐฐ์น˜)ํ•ด๋‹ฌ๋ผ
  • ์ด div๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ body์•ˆ์— ์ ๋Š” HTML์ด ๋  ๊ฑฐ๋‹ค.
  • ์ด ๋‹จ๊ณ„ ์ดํ›„๋กœ๋Š” ๋ชจ๋‘ ์ด๋ฐฉ์‹๋Œ€๋กœ React element๋ฅผ ์ƒ์„ฑํ• ๊ฑฐ๋‹ค.
  • ์–ด๋ ค์šด ๋ฐฉ์‹ ์ธ๋ฐ React๊ฐ•์˜ ์ด๋ฒˆ์—๋งŒ ์ด๋ ‡๊ฒŒํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฐ•์˜์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์•ˆํ•œ๋‹ค.
  • createElement์˜ ์„ธ ๋ฒˆ์งธ argument๋Š” span์˜ content(๋‚ด์šฉ)์ด๋‹ค.
  • React.createElement์‚ฌ์šฉ
  • ์ฒซ๋ฒˆ์งธ argument๋Š” “span”์ด์•ผ ์–ด๋–ค ํƒœ๊ทธ๋“ ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค. div, button๋„ ๊ฐ€๋Šฅ ์œ ํšจํ•œ HTMLํƒœ๊ทธ์ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์œผ๋กœ property๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • style์„ ๋ฐ”๊ฟ€ ์ˆ˜ ๋„ ์žˆ๋‹ค.
  • React JS๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ํ•ด์™”๋˜ ๋ฐฉ์‹์„ ๊ฑฐ๊พธ๋กœ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•จ
  • ๋ฐ”๋‹๋ผ JS์—์„œ๋Š” HTML์„ ๋จผ์ € ๋งŒ๋“ค๊ณ , ๊ทธ๊ฑธ Javascript๋กœ ๊ฐ€์ ธ์™€์„œ HTML์„ ์ˆ˜์ •ํ•˜๋Š” ์‹์ด๋‹ค.
  • React JS์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด Javascript๋กœ์จ ์‹œ์ž‘ํ•œ๋‹ค. ๊ทธ๋‹ค์Œ HTML์ด ๋œ๋‹ค
  • ์ด๊ฒƒ์ด ๋ฐ”๋กœ React JS ํŒŒ์›Œ์˜ ํ•ต์‹ฌ์ด๋‹ค.
  • React JS๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ element๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๊ฒƒ์ด๋ผ๋Š” ๋ง์ด๋‹ค.
  • React JS๋Š” ์œ ์ €์—๊ฒŒ ๋ณด์—ฌ์งˆ ๋‚ด์šฉ์„ ์ปจํŠธ๋กคํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. (ํ•ต์‹ฌ)
  • ReactJS์—๊ฒŒ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” HTML์„ ์—…๋ฐ์ดํŠธํ•˜๋ผ๊ณ  ํ• ๊ฑฐ๋‹ค.
  • ์œ ์ผํ•œ ๋ฐฉ์‹์€ Javascript์—์„œ ์‹œ์ž‘ํ•˜๊ณ  HTML์—์„œ ๋๋‚˜๋Š” ๊ฑฐ๋‹ค.
  • Javascript๋ฅผ ์ด์šฉํ•ด element๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ  React JS๊ฐ€ ๊ทธ๊ฑธ HTML๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๊ฑฐ๋‹ค.
  • ๋‚˜์ค‘์— React JS๋ฅผ ์ด์šฉํ•˜์—ฌ element๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณผ ๊ฑฐ๋‹ค.
  • React JS๊ฐ€ ๊ทธ ์—…๋ฐ์ดํŠธ๋ฅผHTML์— ๋ณด์—ฌ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • id ๋งŒ๋“คํ•„์š”์—†๋‹ค. ๋ฒ„ํŠผ์„ ์ฐพ์•„์„œ ๊ฐ€์ ธ์˜ฌ ํ•„์š”๋„ ์—†๋‹ค. addEventListener๋ฅผ ๋‹ฌ ํ•„์š” x

2.3 Events in React

  • ์ด๋ฒˆ๊ฐ•์˜ ์—์„œ๋Š” ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด๋ณผ๊ฑฐ๋‹ค.
  • ๋ฒ„ํŠผ์—์„œ ์ผ์–ด๋‚˜๋Š” event๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐ์ง€ํ•˜๋Š”์ง€๋„ ์•Œ์•„๋ณผ๊ฑฐ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฌ๊ธฐ ์ด button.addEventListener๊ฐ€ ๋Œ€์ฒด๋  ๊ฑฐ๋‹ค.
  • ์—ฌ๊ธฐ id ๋„ ๋Œ€์ฒด๋ ๊ฑฐ๋‹ค id๊ฐ€ ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • constant์˜ ์ด๋ฆ„์€ HTML์˜ ํƒœ๊ทธ ์ด๋ฆ„๊ณผ ๋ฐ˜๋“œ์‹œ ์ผ์น˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • null ํ•œ ๊ฒƒ์€ property๊ฐ€ ์•„๋ฌด ๊ฒƒ๋„ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • btn์„ root์— ๋ Œ๋”๋ฅผ ํ•˜๋ผ.
  • span๊ณผ button ๋‘๊ฐ€์ง€ ๋ชจ๋‘ renderํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?
  • ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 2๊ฐœ์˜ component๋ฅผ ๊ฐ€์ง€๋Š” component๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค.

 

  • ์šฐ๋ฆฌ์˜ ๋ฏธ์…˜์€ ์—ฌ๊ธฐ ์ฃผ์–ด์ง„ id=”btn”์„ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ๊ทธ ๋‹ค์Œ button์„ ๊ฐ€์ ธ์™€์„œ, addEventListener๋ฅผ ๋ถ™์ด๊ณ  listerfunction์„ ๋งŒ๋“ ๋‹ค
  • ์ด๊ฑฐ ๋‹คํ•˜๋Š” ๋Œ€์‹ ์— ์šฐ๋ฆฌ๋Š” button์— property๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • property id๋‚˜ class name, ๋˜๋Š” style๋„ ๋ ์ˆ˜ ์žˆ์ง€๋งŒ ๋„ˆ๋ฌด ์ง€๋ฃจํ•˜๋‹ค.
  • ๊ทธ ๋Œ€์‹ ์— ์ด๋ฒˆ์—” button์— eventlistenr๋ฅผ ์ค€๋‹ค.
  • <๋ณดํ†ต๋ฐฉ์‹> 
  • ํ•˜์ง€๋งŒReact JS์˜ ๋ฐฉ์‹์œผ๋กœ ํ•ด๋ณผ๊ฑฐ๋‹ค.
  • property์—๋‹ค๊ฐ€ event listener๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 4์ค„์˜ ์ฝ”๋“œ๋ฅผ ํ•œ๋ฒˆ์— ๋Œ€์ฒดํ•œ ๊ฑฐ๋‹ค.
  • button์„ ๋งŒ๋“ค์—ˆ๊ณ  ๋‚ด๋ถ€์—๋Š” content๋ฅผ ๋„ฃ์—ˆ๊ณ  event listener๊นŒ์ง€ ์žฅ์ฐฉํ–ˆ๋‹ค.
  • event๋ฅผ ์ ๋Š” ๋ฐฉ์‹์ด ์ข€ ๋‹ค๋ฅด๋‹ค.
  • ๋ฐ”๋‹๋ผ JS์—์„œ๋Š” “click” React JS ์—์„œ๋Š” on
  • ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ React JS์—๊ฒŒ ์šฐ๋ฆฌ๊ฐ€ event listener๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • React JS ํŒ€ interactiveํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•˜๋Š” ์ž‘์—…๋“ค ๋ชจ๋‘๊ฐ€ event๋“ค์„ ๊ฐ์ง€ํ•˜๋Š” ์ผ์ด๋ž€ ๊ฒƒ์„ ๋ง์ด์•ผ.
  • addEventlistener์„ ๋ฐ˜๋ณตํ•ด์„œ ๋งŒ๋“œ๋Š” ๊ฒƒ ๋Œ€์‹ ์— property์—์„œ event๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค.
  • ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์˜ค๋ž˜ ๋Œ๊ณ  ๊ฐ€์ง€ ์•Š์„ ๊ฑฐ๋‹ค.
  • (event ๋“ฑ๋ก) onClick : () => console.log(i'm clicked")
  • property์—์„œ event๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๊ฑฐ๋‹ค.
  • ๋‹ค์Œ ๊ฐ•์˜์—์„œ๋Š” element๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์„ ๋” ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€๊ฑฐ๋‹ค. ๋‹ค๋ฅธ๋ฐฉ์‹์„ ๋ฐฐ์›Œ๋ณด์ž
  • React ์ž์Šต์„œ์—์„œ JSX๋ผ๋˜์ง€ ํ•จ์ˆ˜ํ˜• ํด๋ž˜์Šคํ˜• ๋” ๊ณต๋ถ€ ํ•ด๋ณด์ž

2.4 Recap

  • React JS๊ฐ€ element๋ฅผ ์ƒ์„ฑํ•˜๊ณ  event listener๋ฅผ ๋”ํ•˜๋Š” ๊ฒƒ์„ ๋„์™€์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • React dom์„ ๊ฐ€์ ธ์˜จ์ด์œ ๋Š” React elemenet๋“ค์„ ๊ฐ€์ ธ๋‹ค๊ฐ€ HTML๋กœ ๋ฐ”๊ฟ”์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์ด ๋น„์–ด์žˆ๋Š” div๋Š” ReactDOM์ด React element๋“ค์„ ๊ฐ€์ ธ๋‹ค ๋†“์„ ๊ณณ์ด๋‹ค.
  • React element๋“ค์„ root div ์•ˆ์—์„œ ๋ณด์—ฌ์ฃผ๋ผ๋Š” ๋œป์ด๋‹ค.
  • property object์— event listener๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.
  • React ๊ฐœ๋ฐœ์ž๋กœ์„œ, createElement๋ฅผ ์“ธ ์ผ์€ ์—†์„ ๊ฑฐ๋‹ค.
  • property๋Š” ์ด์ œ๊นŒ์ง€ ๋ดค๋“ฏ์ด id๋‚˜ class๋‚˜ event listener๊ฐ€ ๋ ์ˆ˜ ์žˆ๋‹ค.
  • ์ฒซ๋ฒˆ์งธ argument๋Š” root์— ๋“ค์–ด๊ฐˆ HTML ํƒœ๊ทธ์ด๋‹ค.
  • ๋‘ ๋ฒˆ์งธ argument๋Š” props๊ฐ€ ํฌํ•จ๋œ object์ด๋‹ค. ์„ธ๋ฒˆ์งธ๋Š” content
  • props ๋Š” properties์˜ ์ค„์ž„๋ง์ด๋‹ค.

 

2.5 JSX

๋‹ค์‹œ๋ณด๊ธฐ

  • createElement๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ค„ ๋ณผ ๊ฑฐ๋‹ค.
  • createElement๋ฅผ ๋Œ€์ฒดํ•˜๋ ค๋Š” ์ด์œ ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ข€๋” ํŽธ๋ฆฌํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.
  • ๊ทธ ํŽธ๋ฆฌํ•œ ๋…€์„์€ JSX๋ผ๋Š” ๋…€์„์ด๋‹ค.
  • JSX๋Š” JavaScript๋ฅผ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์ด๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ React์š”์†Œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š”๋ฐ HTML์—์„œ ์‚ฌ์šฉํ•œ ๋ฌธ๋ฒ•๊ณผ ํก์‚ฌํ•œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ ๋ง์ด๋‹ค. ๋ฐ‘์—๊ป˜ JSX์ด๋‹ค.
  • ๋‚ด์šฉ์€ ๊ทธ ์—ด๊ณ  ๋‹ซ๋Š” ํƒœ๊ทธ ์‚ฌ์ด์— ๋‹ด๊ฒจ์žˆ๋‹ค
  • ใ„ด
  • ์œ„์—๊ป˜ JSX์ด๋‹ค.
  • error๊ฐ€ ๋œจ๋Š”๋ฐ ์™œ๋ƒ๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์˜จ์ „ํžˆ JSX๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ
  • ๊ทธ๋ž˜์„œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ JSX๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ญ”๊ฐ€๋ฅผ ์„ค์น˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค.
  • Babel์€ ์ฝ”๋“œ๋ฅผ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” ๋…€์„์ด๋‹ค.
  • .JSX๋กœ ์ ์€ ์ฝ”๋“œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฑฐ๋‹ค.
  • ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด  ์•„๋งˆ ํ•œ๋ฒˆ๋„ ๋ฐ‘์—๊ฑธ ์‚ฌ์šฉํ•ด ๋ณธ์ ์ด ์—†์„ ๊ฒƒ์ด๋‹ค. JSX๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ
  • ๋ธŒ๋ผ์šฐ์ €๋Š” JSX๋ฅผ ๋ชฐ๋ผ์„œ ๋ธŒ๋ผ์šฐ์ €๋Š” jSX๋ฅผ invalidํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•จ
  • ๋ณ€ํ™˜์„ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค babel์„ ์ด์šฉ
  • ๋‹ค์Œ ์‹œ๊ฐ„์€ JSX์—๋Œ€ํ•ด์„œ ๋”์•Œ์•„๋ณผ๊ฑฐ๋‹ค
  • ๋ฐ‘์— ๋ฐฉ์‹์€ ์‚ฌ์šฉํ•˜๊ธฐ ์‹ซ๋‹ค ์œ„์— ํ™”์‚ดํ‘œํ•จ์ˆ˜๊ฐ™์€๊ฑธ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค.
  • createElement ์ด๋ฆ„ props ๊ทธ๋ฆฌ๊ณ  ๋‚ด์šฉ๋“ค 
  • ๋‹จ๋”” ๋“ฑํ˜ธ๊ฐ™์ด ๋ฌธ๋ฒ•์ด ์กฐ๊ธˆ ๋‹ฌ๋ผ์ง„ ๊ฒŒ ๋‹ค๋‹ค.
  • onMouseEnter :(์ฝœ๋ก )์ด ๋ถ™์—ˆ๋˜ ๊ฑฐ ๋Œ€์‹  onMouse Enter์— ๋“ฑํ˜ธํ•˜๊ณ  ๊ด„ํ˜ธ๋ฅผ ์—ด์–ด์ฃผ๋Š” ๊ฒŒ ๋‹ค๋‹ค. ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„ ๊ฑด ์—†๋‹ค.

2.6 JSX part Two

  • ์œ„์—๊บผ ๋Œ€์‹ ์— ๋‚ด๊ฐ€ ํ•˜๊ณ  ์‹ถ์€๊ฑด JSX ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค
  • createElement ๋Œ€์‹ ์— ๋ง์ด๋‹ค 
  • Button์ด๋‚˜ Title์„ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ค.
    • ์•ž์—๋Š” ํ•ญ์ƒ ๋Œ€๋ฌธ์ž

    • ์ปดํฌ๋„ŒํŠธ์˜ ์ฒซ ๊ธ€์ž๋Š” ๋ฐ˜๋“œ์‹œ ๋Œ€๋ฌธ์ž์—ฌ์•ผ ํ•œ๋‹ค.
    • JSX๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž‘์€ ์š”์†Œ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
      • ์—ฌ๋Ÿฌ ์š”์†Œ๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ์„œ๋งŒ๋“ค์–ด์„œ ํ•ฉ์ณ ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

 

 

728x90
๋ฐ˜์‘ํ˜•