Skip to content

Latest commit

ย 

History

History
121 lines (95 loc) ยท 3.97 KB

File metadata and controls

121 lines (95 loc) ยท 3.97 KB

3์ฃผ์ฐจ - 1.Props

Props๋ž€?

์ปดํฌ๋„ŒํŠธ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™ํ•˜๋Š” ์ˆ˜๋‹จ
Props๋Š” Read Only๋กœ ์ฝ๊ธฐ๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

Props ์‹ค์Šต์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ

์ง€๋‚œ ๊ฐ•์˜์— ์‚ฌ์šฉํ–ˆ๋˜ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ธ๊ณ„ ์‹œ๊ฐ„์„ ๋ณด์—ฌ์ฃผ๋Š” ์•ฑ์„ ์ œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

const WorldClock = props => {
  return <div></div>;
};

์œ„์˜ ์ปดํฌ๋„ŒํŠธ๋Š” WorldClock์ด๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ–๊ณ  props๋ฅผ ์ธ์ž๋กœ ๋ฐ›๋Š” ์ปดํฌ๋„ŒํŠธ๋‹ค.

์•„๋ž˜์˜ ์ปดํฌ๋„ŒํŠธ๋Š” props๋ฅผ ํ†ตํ•ด์„œ ๋„์‹œ์˜ ์ด๋ฆ„๊ณผ ์‹œ๊ฐ„์ด ์ „๋‹ฌ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ ์ปดํฌ๋„ŒํŠธ๋‹ค.

const WorldClock = props => {
  return (
    <div className="WorldClock">
      <h2>๐ŸŒ {props.city}</h2>
      <p>โฐ {props.time}</p>
    </div>
  );
};

์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•œ ํ›„ ์ฝ˜์†”์„ ํ™•์ธํ•˜๊ฒŒ ๋˜๋ฉด ์•„๋ž˜์˜ ๊ฒฝ๊ณ ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ WorldClock์ด ์•„์ง ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒฝ๊ณ ์™€
์ด๋ชจ์ง€๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ spanํƒœ๊ทธ์— role์†์„ฑ๊ณผ aria-label์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ผ๋Š” ๊ฒฝ๊ณ ๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ์ด๋ชจ์ง€์™€ ๊ด€๋ จ๋œ ๊ฒฝ๊ณ ๋Š” ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

const WorldClock = props => {
  return (
    <div className="WorldClock">
      <h2>
        <span role="img" aria-label="Earth Emoji">
          ๐ŸŒ
        </span>{" "}
        {props.city}
      </h2>
      <p>
        <span role="img" aria-label="Clock Emoji">
          โฐ
        </span>{" "}
        {props.time}
      </p>
    </div>
  );
};

์ž‘์„ฑํ•œ WorldClock์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Appํ•จ์ˆ˜๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค.

function App() {
  return (
    <div className="App">
      <h1 style={headerStyle}>Hello World!</h1>
      <h2 className={"titleStyle"}>ReactJS ๋‘˜๋Ÿฌ๋ณด๊ธฐ</h2>
      <WorldClock city="์„œ์šธ" time="10:00" />
    </div>
  );
}

WorldClock์ปดํฌ๋„ŒํŠธ์˜ city์— ์„œ์šธ์ด๋ผ๋Š” ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๊ณ  time์— 10:00์„ ๋„˜๊ฒจ ์ฃผ์—ˆ๋‹ค.
WorldClock์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ชจ๋“  ๊ฒฝ๊ณ ๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  ์•„๋ž˜์˜ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


์šฐ๋ฆฌ๊ฐ€ ์ „๋‹ฌํ•œ props๊ฐ€ WorldClock์ปดํฌ๋„ŒํŠธ์— ์ž˜ ์ „๋‹ฌ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์•ฝ๊ฐ„์˜ ๊ตฌ๋ถ„์„ ๋‘๊ธฐ ์œ„ํ•ด App.css์— ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

.WorldClock {
  border: 1px solid black;
  width: 500px;
  margin: 0 auto 10px auto;
}

์šฐ๋ฆฌ๊ฐ€ ์ง€์ •ํ•œ ์Šคํƒ€์ผ์ด ์ž˜ ์ ์šฉ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


์„ธ๊ณ„ ์‹œ๊ฐ„์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋„์‹œ๋ฅผ ์ถœ๋ ฅํ•ด๋ณด์ž.
App.js์˜ Appํ•จ์ˆ˜๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.

function App() {
  return (
    <div className="App">
      <h1 style={headerStyle}>Hello World!</h1>
      <h2 className={"titleStyle"}>ReactJS ๋‘˜๋Ÿฌ๋ณด๊ธฐ</h2>
      <WorldClock city="์„œ์šธ" time="10:00" />
      <WorldClock city="๋ฒ ์ด์ง•" time="09:00" />
      <WorldClock city="์‹œ๋“œ๋‹ˆ" time="12:00" />
      <WorldClock city="LA" time="17:00" />
    </div>
  );
}

์ถ”๊ฐ€ํ•œ 3๊ฐœ์˜ WorldClock์ปดํฌ๋„ŒํŠธ ๋˜ํ•œ ์ž˜ ๋ณด์—ฌ์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


WorldClock์ปดํฌ๋„ŒํŠธ์—์„œ city์™€ time์†์„ฑ์ด props๋กœ ์‚ฌ์šฉ๋˜์–ด์ง€๊ณ  ์žˆ์œผ๋ฉฐ
๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๊ฐ€ WorldClock์ปดํฌ๋„ŒํŠธ์˜ props๋กœ ๋„˜์–ด๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.