๐Ÿฅ ๊ณต์‹๋ฌธ์„œ๋กœ ๋ฐฐ์šฐ๋Š” React

Sohyeon Bakยท2022๋…„ 8์›” 9์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
4/9
post-thumbnail

01. Introducing JSX

Overview

const element = <h1>Hello, world!</h1>;

์ด๊ฒƒ์€ ๋ฌธ์ž์—ด๋„ HTML๋„ ์•„๋‹Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ™•์žฅ๋œ ๋ฌธ๋ฒ• JSX์ด๋‹ค.
JSX๋ฅผ ํ†ตํ•ด UI ๋กœ์ง์„ ์„ค๋ช…ํ•ด ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์—‘ํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

๐Ÿ“Œ JSX๋ž€

๋ฆฌ์—‘ํŠธ์—์„œ ๋ Œ๋”๋ง ๋กœ์ง์ด UI๋กœ์ง๊ณผ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“ค์ธ๋‹ค.
๋งˆํฌ์—…์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ "์ปดํฌ๋„ŒํŠธ"๋ผ๋Š” ์œ ๋‹›์œผ๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค.
HTML์ฒ˜๋Ÿผ ์ƒ๊ฒผ์œผ๋‚˜ ๋งˆํฌ์—… ์–ธ์–ด๊ฐ€ ์•„๋‹Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ๋ฐ”๋ฒจ๋กœ ๋ณ€ํ™˜์ด ๋˜์–ด์ง€๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

Expressions in JSX

ํŠน์ง• 1

const name = 'Josh Perez';
const element = <h1>Hello, {name}</h1>;
function getGreeting(user) {
  if (user) {
    return <h1>Hello, {formatName(user)}!</h1>;
  }
  return <h1>Hello, Stranger.</h1>;
}

JSX๋Š” ์ค‘๊ด„ํ˜ธ ์•ˆ์— ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
name์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ํ• ๋‹น๋œ ๊ฐ’์ด JSX์—์„œ ํ‘œํ˜„๋˜์–ด์ง€๊ณ , if์™€ for๋ฌธ ๋“ฑ๊ณผ ๊ฐ™์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ง• 2

function NumberList(props) {
  const numbers = props.numbers;
  return (
    <ul>
      {numbers.map((number) =>
        <ListItem key={number.toString()}
                  value={number} />
      )}
    </ul>
  );
}

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ map()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด JSX๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ˜ธ์ถœํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.
ํ•ด๋‹น ๋ฐฉ์‹์—์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ Key๋ฅผ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
Key๋Š” ์—˜๋ฆฌ๋จผํŠธ์˜ ๊ณ ์œ ์„ฑ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต๋ฌธ ์•ˆ ์—˜๋ฆฌ๋จผํŠธ์— ์ง€์ •ํ•ด์ค˜์•ผํ•˜๊ณ , <li>ย ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐฐ์—ด์˜ย <ListItem />ย ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ key๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
Key๋Š” ํ˜•์ œ ๋ฐฐ์—ด ์•ˆ์—์„œ๋งŒ ๊ณ ์œ ์„ฑ์„ ์ง€ํ‚ค๋ฉด ๋˜๊ณ , ์ „์ฒด ๋ฒ”์œ„๋ฅผ ๊ณ ๋ คํ•  ํ•„์š”๋Š” ์—†๋‹ค.

ํŠน์ง• 3

<h1 className="title" onClick={onload}>Hello!!!</h1>

JSX๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ€๊น๊ธฐ ๋•Œ๋ฌธ์— camelCase ํ”„๋กœํผํ‹ฐ๋กœ ์‚ฌ์šฉํ•ด์ค˜์•ผ ํ•œ๋‹ค.
* class โ†’ className
* tabindex โ†’ tabIndex
* onclick โ†’ onClick

profile
์ •๋ฆฌํ•˜๊ณ  ๊ธฐ์–ตํ•˜๋Š” ๊ณณ

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