TIL

dev-wholยท2021๋…„ 4์›” 29์ผ
0

โœ๐Ÿป React ๊ธฐ์ดˆ

React๋ž€?

  • ํ”„๋ก ํŠธ์•ค๋“œ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ JavaScript ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

React๋ฅผ ์“ฐ๋Š” ์ด์œ 

์„ ์–ธํ˜•(Declarative)

  • HTML/CSS/JS๋กœ ๋‚˜๋ˆ ์„œ ์ž‘์—…์„ ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ JSX๋ฅผ ํ™œ์šฉํ•œ ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    • JSX์ด๋ž€?
      HTML๊ณผ JS๊ฐ€ ๊ฒฐํ•ฉํ•œ ๋ฌธ๋ฒ•์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑ ๊ฐ€๋Šฅ

์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜(Component-Based)

  • ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์ฝ”๋“œ๋ฅผ ๋ฌถ์–ด๋‘” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ธฐ๋ฐ˜
  • ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๊ธฐ๋Šฅ ์ž์ฒด์— ์ง‘์ค‘ํ•˜์—ฌ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
  • ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์‰ฝ๋‹ค

๋ฒ”์šฉ์„ฑ

  • JS ํ”„๋กœ์ ํŠธ ์–ด๋””์—๋“  ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉ ๊ฐ€๋Šฅ
  • Facebook์—์„œ ๊ด€๋ฆฌ๋˜์–ด ์•ˆ์ •์ 
  • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

JSX๋ž€?

  • JavaScript XML์˜ ์ค„์ž„ ๋ง๋กœ ๋ฌธ์ž์—ด๊ณผ HTML์ด ์•„๋‹ˆ๋‹ค
    • XML์ด๋ž€?
      eXtensible Markup Language : ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋Š” ํ‘œ์‹œ ์–ธ์–ด
      HTML๊ณผ XML์˜ ์ฐจ์ด์  : HTML์€ ํƒœ๊ทธ๊ฐ€ ํ™•์ •๋˜์–ด ์•ฝ์†๋œ ๋ฌธ๋ฒ•์„ ๋”ฐ๋ฅด์ง€๋งŒ XML์˜ ํƒœ๊ทธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ • ๊ฐ€๋Šฅํ•˜๋‹ค
  • JSX๋ฅผ ์ด์šฉํ•ด React ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค
  • JSX๋Š” ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์˜ ํ™•์žฅ๋œ ๋ฌธ๋ฒ•์ด์ง€๋งŒ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋Š” ์•„๋‹ˆ๋‹ค. ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” Babel์ด ํ•„์š”ํ•˜๋‹ค.
    • Babel์ด๋ž€?
      Babel is a JavaScript compiler : JSX๋ฅผ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ

JSX ๊ทœ์น™

  • ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ ์•ˆ์— ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค ์ฆ‰ opening tag์™€ closing tag๋กœ ๊ฐ์‹ธ์ค˜์•ผ ํ•œ๋‹ค
    1
    2
    3
    4
    5
    6
    7
    8
    <div>
    ย ย <div>
    ย ย ย ย <h1>Hello</h1>
    ย ย </div>
    ย ย <div>
    ย ย ย ย <h2>World</h2>
    ย ย </div>
    </div>
    cs
  • ์—˜๋ฆฌ๋จผํŠธ ํด๋ž˜์Šค ์‚ฌ์šฉ ์‹œ class๊ฐ€ ์•„๋‹Œ className์œผ๋กœ ํ‘œ๊ธฐ
    1
    <divย className="print">hi</div>
    cs
  • ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹ ์‚ฌ์šฉ์‹œ, ์ค‘๊ด„ํ˜ธ {} ์ด์šฉ
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    functionย app(){
    ย ย constย nameย =ย "zumwhol"
    ย 
    returnย (
    ย ย <div>
    ย ย ย ย hiย {name}
    ย ย </div>
    ย ย ย ย );
    }
    ย 
    cs
  • ์‚ฌ์šฉ์ž ์ •์˜ ์ปดํฌ๋„ŒํŠธ๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘(PascalCase)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    functionย Hi(){
    ย 
    ย ย returnย <div>Hello</div>;
    ย 
    }
    ย 
    functionย HiWorld(){
    ย 
    ย ย returnย <Hiย />;
    ย 
    }
    cs
  • ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์—๋Š” ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ (์ค‘๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ํ‘œํ˜„์‹์œผ๋กœ ์ธ์‹)
    1
    2
    3
    4
    5
    <div>
    ย ย {
    ย ย ย ย (ageย <ย 18)ย ?ย (<p>true</p>)ย :ย (<p>false</p>)
    ย ย }
    </div>
    cs
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ HTML ์—˜๋ฆฌ๋จผํŠธ ํ‘œ์‹œ๋Š” map() ํ•จ์ˆ˜ ์ด์šฉ
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    constย someย =ย [
    ย ย {id:ย 1,ย category:ย "shoes",ย brand:ย "Nike"}
    ย ย {id:ย 2,ย category:ย "shoes",ย brand:ย "Adidas"}
    ];
    ย 
    functionย Basket(){
    ย ย constย choiceย =ย some.map((x)ย =>
    ย ย ย ย <divย key={x.id}>
    ย ย ย ย ย ย <h1>{x.category}</h1>
    ย ย ย ย ย ย <p>{x.brand}</p>
    ย ย ย ย </div>
    ย ย );
    ย 
    returnย (
    ย ย <div>
    ย ย ย ย {choice}
    ย ย </div>
    ย ย );
    }
    ย 
    cs

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