Post

๐ŸŽฌ ReactJS๋กœ ์˜ํ™” ์›น ์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ (06) - Props

Props

Props๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค!
(์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ž€ function(ํ•จ์ˆ˜)๋ฅผ ์˜๋ฏธ)

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฒ„ํŠผ ์•ˆ์˜ ํ…์ŠคํŠธ ๋‚ด์šฉ๋งŒ ๋‹ค๋ฅด๊ณ  ์Šคํƒ€์ผ์€ ๋˜‘๊ฐ™์€ ๋ฒ„ํŠผ ๋‘๊ฐœ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์€๋ฐ ๊ทธ๋Ÿด๋•Œ๋งˆ๋‹ค ๊ฐ๊ฐ์˜ ๋ฒ„ํŠผ์— ๋˜‘๊ฐ™์€ ๋‚ด์šฉ์˜ ์Šคํƒ€์ผ ์ฝ”๋“œ๋ฅผ ๋ณต๋ถ™ํ•˜๋Š”๊ฑด ๋งค์šฐ ๋น„ํšจ์œจ์ .
๊ทธ ๋Œ€์‹  ์ด๋Ÿฐ ์Šคํƒ€์ผ์„ ๋ชจ๋‘ ๊ฐ–๋Š” ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์žฌ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค

๐Ÿ”ฝ ์˜ˆ์‹œ ๐Ÿ”ฝ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Btn() {
  return (
    <button
      style={{
        backgroundColor: "tomato",
        color: "white",
        padding: "10px 20px",
        borderRadius: 10,
        border: 0
      }}
    >
      Save Changes
    </button>
  );
}

Btn์ด๋ผ๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์Šคํƒ€์ผ๋“ค์„ ์ง€์ •ํ•˜๊ณ ,

1
2
3
4
5
6
7
8
function App() {
  return (
    <div>
      <Btn banana="Save Changes" />
      <Btn banana="Continue" />
    </div>
  );
}

๋ฒ„ํŠผ ์•ˆ์˜ ํ…์ŠคํŠธ๋Š” <Btn text="Save Changes" /> ์ด๋Ÿฐ ์‹์œผ๋กœ syntax๋ฅผ ์ถ”๊ฐ€ํ•ด ํ…์ŠคํŠธ๋ฅผ ๊ฐ๊ฐ ๋‹ค๋ฅด๊ฒŒ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ text๋Š” ๊ผญ text๊ฐ€ ์•„๋‹ˆ์–ด๋„ ๋œ๋‹ค. potato๋ผ๊ณ  ์ง“๋“ , banana๋ผ๊ณ  ์ง“๋“  ๋‚ด๋งด์ž„

์—ฌ๊ธฐ๊นŒ์ง€์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™•์ธํ•ด๋ณด๋ฉด,

image

๋ฒ„ํŠผ ์•ˆ์˜ ํ…์ŠคํŠธ ๋‚ด์šฉ์ด ๋˜‘๊ฐ™๋‹ค ๐Ÿค”
์™œ๋ƒํ•˜๋ฉด ๋‚˜๋Š” banana๋ฅผ Btn์—๊ฒŒ ๋ณด๋ƒˆ๋Š”๋ฐ, Btn์€ banana๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์žˆ๊ธฐ ๋–„๋ฌธ!

๋‚ด๊ฐ€ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋“ค์€ ์ธ์ž(argument)๋ฅผ ๋ฐ›๋Š”๋ฐ, ์ด ์ธ์ž์˜ ์ด๋ฆ„ ๋˜ํ•œ ๋‚ด ๋ง˜๋Œ€๋กœ ์ง€์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณดํ†ต ์‚ฌ๋žŒ๋“ค์€ ์ด๊ฑธ props๋ผ๊ณ  ํ•œ๋‹ค
Btn์œผ๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›๋Š” properties
๊ทธ๋ฆฌ๊ณ  ์ฝ˜์†”๋กœ๊ทธ๋ฅผ ์ฐ์–ด๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ props๋Š” ์˜ค๋ธŒ์ ํŠธ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋„ฃ์€ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ–๋Š” ์˜ค๋ธŒ์ ํŠธ!
์•”ํŠผ ๊ทธ๋ž˜์„œ ! banana๋ฅผ Btn์˜ ์ธ์ž๋กœ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Btn(props) {
  return (
    <button
      style={{
        backgroundColor: "tomato",
        color: "white",
        padding: "10px 20px",
        borderRadius: 10,
        border: 0
      }}
    >
      {props.banana}
    </button>
  );
}

์ด๋ ‡๊ฒŒ ! ๊ทธ๋Ÿผ ์ด์ œ

image

ํ…์ŠคํŠธ ๋‚ด์šฉ์ด ๋ฐ˜์˜๋œ ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Btn({ banana }) {
  return (
    <button
      style={{
        backgroundColor: "tomato",
        color: "white",
        padding: "10px 20px",
        borderRadius: 10,
        border: 0
      }}
    >
      {banana}
    </button>
  );
}

์ด๋ ‡๊ฒŒ ๋” ์งง๊ฒŒ ์ ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹น

This post is licensed under CC BY 4.0 by the author.