Skip to content

1. React

DoYoung Park edited this page May 7, 2023 · 1 revision

JSX

์šฐ์„  React๋ฅผ ํ•˜๊ฒŒ๋œ๋‹ค๋ฉด, JSX๋ผ๋Š” ์–ธ์–ด๋ฅผ ํ•˜์—ฌ์•ผํ•œ๋‹ค. 
React๋ผ๊ณ ํ•ด์„œ ์ ˆ๋Œ€ ์–ด๋ ค์šด๊ฒŒ ์•„๋‹ˆ๋‹ค. ๊ธฐ์กด์ฒ˜๋Ÿผ HTML / CSS ์งœ์„œ ์›น ํŽ˜์ด์ง€ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€๋ฉด ๋! 

๋Œ€์‹  HTML ๋ง๊ณ  JSX๋ฅผ ์“ฐ๋Š”๋ฐ JSX๊ฐ€ ๋ญ”๋ฐ ๊ทธ๋ž˜์„œ?

JSX JavaScript eXtension์˜ ์ค„์ž„๋ง๋กœ์จ HTMLํƒœ๊ทธ (div, h1, h2 ๋“ฑ)๋“ค์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค์ฝ”๋“œ ์•ˆ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.
JSX๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋“ค์€ ๋นŒ๋“œ๋  ๋•Œ, Babel์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค€๋‹ค.

์ •๋ฆฌํ•˜์—ฌ์„œ JSX ๋ฌธ๋ฒ•

  1. class ๋„ฃ์„ ๋• className

  2. ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ & ๋ณ€์ˆ˜ ๊ฝ‚๊ธฐ { ๋ณ€์ˆ˜ ๋ช… }

  3. style ๋„ฃ์„ ๋• style= {{์ด๋ฆ„ '๊ฐ’'}}

state ? ์ž๋ฃŒ ์ž ๊น ์ €์žฅํ•  ๋• state ์“ฐ๊ธฐ

  1. import { useState }
  2. useState(๋ณด๊ด€ํ•  ์ž๋ฃŒ)
  3. let [์ž‘๋ช…,์ž‘๋ช…]

Destructuring ๋ฌธ๋ฒ•?

  • let [ a , c ] = [ 1 , 2 ]

์™œ state ์จ์•ผํ•˜๋Š”๊ฐ€?

  • ์ผ๋ฐ˜ ๋ณ€์ˆ˜๋Š” ๊ฐ‘์ž๊ธฐ ๋ณ€๊ฒฝ๋˜๋ฉด html ์ž๋™์œผ๋กœ ๋ฐ˜์˜์ด ์•ˆ๋จ

  • state๋Š” ๊ฐ‘์ž๊ธฐ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ฐ”๋กœ ์ž๋™์œผ๋กœ ๋ฐ˜์˜ํ•ด์คŒ ์ฆ‰, ์ž๋™ ์žฌ ๋ Œ๋”๋ง!

  • ๋ณ€๋™์‹œ ์ž๋™์œผ๋กœ html์— ๋ฐ˜์˜๋˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์œผ๋ฉด state ์“ฐ๊ธฐ!

์ •๋ง์‰ฌ์šด ์ •๋ฆฌ โ†“

์ž์ฃผ ๋ณ€๊ฒฝ๋ ๊ฑฐ ๊ฐ™์€ html ๋ถ€๋ถ„์€ state๋กœ ๋งŒ๋“ค์–ด ๋†“๊ธฐ

state์˜ ํŠน์ง•

  • ๊ธฐ์กด state == ์‹ ๊ทœ state์˜ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ ์•ˆํ•ด์คŒ

warning ์—†์• ๊ธฐ

/_eslint-disable_/

  • jsํŒŒ์ผ ์ตœ์ƒ๋‹จ ์ถ”๊ฐ€ํ•˜๊ธฐ! ์ด๋Ÿฌํ•œ๊ฒƒ์ด Lint ๋„๋Š” ๊ธฐ๋Šฅ

onClick || state ๋ณ€๊ฒฝํ•˜๋Š”๋ฒ•?

  1. ํ•จ์ˆ˜ ์ด๋ฆ„์„ ๋„ฃ์–ด์•ผํ•จ. ๋ฌธ๋ฒ•์„ ๋ฐ”๋กœ ๋„ฃ์–ด๋„ ์ƒ๊ด€์€ ์—†์Œ!
  • onClick={ ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์•ผํ•จ! }
  1. state ๋ณ€๊ฒฝ? ๋ณ€๊ฒฝํ•จ์ˆ˜๋ฅผ ๋„ฃ์•„์•ผํ•จ
state๋ณ€๊ฒฝํ•จ์ˆ˜(์ƒˆ๋กœ์šดstate)
<span
     onClick={() => {
        setlike(like++);
        }}
    >

+ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด spread ๋ฌธ๋ฒ•

์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•œ ๋‹ค์Œ์— ๋ณ€๊ฒฝํ•˜๊ณ ์‹ถ์€๊ฒƒ๋งŒ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฌธ๋ฒ•์œผ๋กœ, ์›๋ณธ์„ ๋ณด์กดํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
let [title, b] = useState([
    "๋‚จ์ž ์ฝ”ํŠธ ์ถ”์ฒœ",
    "๊ฐ•๋‚จ ์šฐ๋™ ๋ง›์ง‘",
    "์—ฌ์ž ์‹ ๋ฐœ ์ถ”์ฒœ",
  ]);

  function setDate() {
    let copy = [...title];
    copy[0] = "์—ฌ์ž ์ฝ”ํŠธ ์ถ”์ฒœ";
    b(copy);
  }
  • state๊ฐ€ array / object๋ฉด shallow copy๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ˆ˜์ •ํ•˜์ž